Skip to content

Commit e4ae20e

Browse files
elfiservicembeaudru
authored andcommitted
Pt br - util Destructuring objects and arrays Notion mbeaudru#62 (mbeaudru#115)
* transl headeLine * transl section -s Variable declaration: var, const, let * transl section Short explanation * transl section Short explanation * transl section Sample Code 1 * transl section Variable declaration -Detailed explanation -var * transl section Variable declaration -Detailed explanation -var * transl Varibles - Detailed explanation - let * transl Varibles - Detailed explanation - let * transl Varibles - Detailed explanation - const * transl Notions-Arrow function-Sample code * transl Notions-Arrow funct-Detailed expl-Concision * fix: last transl committed * transl Notions-Arrow funct-Detailed-this reference * transl Notions-Arrow funct-Useful resources * transl Notions-Arrow funct-Useful resources 2 * transl: pt-bt - Function default parameter value - mbeaudru#62 * changes after Merge with upstream * transl: pt-br - Destructuring objects and arrays - mbeaudru#62
1 parent df9572d commit e4ae20e

File tree

1 file changed

+143
-8
lines changed

1 file changed

+143
-8
lines changed

translations/pt-BR.md

Lines changed: 143 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ Se você estiver com dificuldades em entender alguma coisa, eu sugiro que você
3939
- [Exemplo](#exemplo)
4040
- [Explicação Detalhada](#explicação-detalhada)
4141
- [Material Complementar](#material-complementar)
42-
+ [Função de Seta](#-função-de-seta)
42+
+ [Função de Seta](#função-de-seta)
4343
- [Exemplo](#exemplo-de-codigo)
4444
- [Explicação Detalhada](#detailed-explanation-1)
4545
* [Concisão](#concisão)
4646
* [Referência *this*](#referência-this)
4747
- [Material Útil](#material-útil)
48-
+ [Parametros padrão de uma Function](#function-default-parameter-value)
49-
- [Material Complementar](#external-resource-1)
50-
+ [Desestruturação de objetos e listas](#destructuring-objects-and-arrays)
51-
- [Explicação com Exemplo](#explanation-with-sample-code)
52-
- [Material Útil](#useful-resources-1)
48+
+ [Parametros padrão de uma Function](#parametros-padrão-de-uma-function)
49+
- [Material Complementar](#material-complementar)
50+
+ [Desestruturação de objetos e arrays](#desestruturação-de-objetos-e-arrays)
51+
- [Explicação com exemplo de código](#explicação-com-exemplo-de-código)
52+
- [Material Útil](#material-útil-1)
5353
+ [Metodos de lista - map / filter / reduce](#array-methods---map--filter--reduce)
5454
- [Exemplo](#sample-code-2)
5555
- [Explicação](#explanation)
@@ -287,7 +287,7 @@ person = ["Nick"] // lança um erro, porque a reatribuição não é permitida c
287287
- [Como let e const são escopados em JavaScript - WesBos](http://wesbos.com/javascript-scoping/)
288288
- [Zona temporal Inoperante (TDZ) desmistificada](http://jsrocks.org/2015/01/temporal-dead-zone-tdz-demystified)
289289

290-
### <a name="arrow_func_concept"></a> Função de seta
290+
### <a name="função-de-seta"></a> Função de seta
291291

292292
A atualização do JavaScript ES6 introduziu *funções de seta*, que é outra maneira de declarar e usar funções. Aqui estão os benefícios que elas trazem:
293293

@@ -439,6 +439,141 @@ function myFunc() {
439439

440440
#### Material Útil
441441

442-
- [Arrow functions introduction - WesBos](http://wesbos.com/arrow-functions/)
442+
- [Arrow functions introduction (Introdução à Funções de Seta) - WesBos](http://wesbos.com/arrow-functions/)
443443
- [JavaScript arrow function - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
444444
- [Arrow function and lexical *this*](https://hackernoon.com/javascript-es6-arrow-functions-and-lexical-this-f2a3e2a5e8c4)
445+
446+
### Parametros padrão de uma Function
447+
448+
A partir da atualização do JavaScript ES2015, você pode definir um valor padrão para os parâmetros da função usando a seguinte sintaxe:
449+
450+
```js
451+
function myFunc(x = 10) {
452+
return x;
453+
}
454+
console.log(myFunc()) // 10 -- nenhum valor é fornecido então o valor padrão de x que é 10 será atribuído a x em myFunc
455+
console.log(myFunc(5)) // 5 -- um valor é fornecido então x é igual a 5 em myFunc
456+
457+
console.log(myFunc(undefined)) // 10 -- um valor undefined é fornecido então o valor padrão é atribuído para x
458+
console.log(myFunc(null)) // null -- um valor (null) é fornecido, veja abaixo para mais detalhes neste caso
459+
```
460+
461+
O valor de parâmetro padrão é aplicado em duas e somente duas situações:
462+
463+
- Nenhum parâmetro fornecido
464+
- *undefined* parâmetro fornecido
465+
466+
Em outras palavras, se você passar um *null* o parâmetro padrão **não irá ser aplicado**.
467+
468+
> **Nota:** Atribuição de valor padrão também pode ser usada com parâmetros desestruturados (veja o próximo conceito para ver um exemplo)
469+
470+
#### Material Complementar
471+
472+
- [Default parameter value - ES6 Features](http://es6-features.org/#DefaultParameterValues)
473+
- [Default parameters - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters)
474+
475+
### Desestruturação de objetos e arrays
476+
477+
*Desestruturação* é uma maneira conveniente de criar novas variáveis extraindo alguns valores de dados armazenados em objetos ou arrays (matrizes).
478+
479+
Para nomear alguns casos de uso, *desestruturação* pode ser usado para desestruturar parâmetros de função ou *this.props* em projetos React, por exemplo.
480+
481+
#### Explicação com exemplo de código
482+
483+
- Objeto
484+
485+
Vamos considerar o seguinte objeto para todos os exemplos:
486+
487+
```js
488+
const person = {
489+
firstName: "Nick",
490+
lastName: "Anderson",
491+
age: 35,
492+
sex: "M"
493+
}
494+
```
495+
496+
Sem desestruturação
497+
498+
```js
499+
const first = person.firstName;
500+
const age = person.age;
501+
const city = person.city || "Paris";
502+
```
503+
504+
Com desestruturação, tudo em uma única linha:
505+
506+
```js
507+
const { firstName: first, age, city = "Paris" } = person; // É isso ! :)
508+
509+
console.log(age) // 35 -- uma nova variável age é criada e é igual a person.age
510+
console.log(first) // "Nick" -- uma nova variável first é criada e é igual person.firstName
511+
console.log(firstName) // ReferenceError -- person.firstName existe MAS a nova variável criada é nomeada primeiro
512+
console.log(city) // "Paris" -- uma nova variável city é criada e uma vez que person.city é indefinida, city é igual ao valor padrão fornecido "Paris".
513+
```
514+
515+
**Nota :** Em ```const { age } = person;```, os colchetes depois da palavra-chave *const* não são usados para declarar um objeto nem um bloco, mas é a sintaxe da *desestruturação*.
516+
517+
- Parâmetros de função
518+
519+
*Desestruturação* é freqüentemente usado para desestruturar parâmetros de objetos em funções.
520+
521+
Sem desestruturação
522+
523+
```js
524+
function joinFirstLastName(person) {
525+
const firstName = person.firstName;
526+
const lastName = person.lastName;
527+
return firstName + '-' + lastName;
528+
}
529+
530+
joinFirstLastName(person); // "Nick-Anderson"
531+
```
532+
533+
Ao desestruturar o parâmetro de objeto *person*, obtemos uma função mais concisa:
534+
535+
```js
536+
function joinFirstLastName({ firstName, lastName }) { // criamos variáveis firstName e lastName por desestruturação person parameter
537+
return firstName + '-' + lastName;
538+
}
539+
540+
joinFirstLastName(person); // "Nick-Anderson"
541+
```
542+
543+
A desestruturação é ainda mais agradável para usar com [funções de seta] (#função-de-seta):
544+
545+
```js
546+
const joinFirstLastName = ({ firstName, lastName }) => firstName + '-' + lastName;
547+
548+
joinFirstLastName(person); // "Nick-Anderson"
549+
```
550+
551+
- Array (Matriz)
552+
553+
Vamos considerar a seguinte array:
554+
555+
```js
556+
const myArray = ["a", "b", "c"];
557+
```
558+
559+
Sem desestruturação
560+
561+
```js
562+
const x = myArray[0];
563+
const y = myArray[1];
564+
```
565+
566+
Com desestruturação
567+
568+
```js
569+
const [x, y] = myArray; // É isso !
570+
571+
console.log(x) // "a"
572+
console.log(y) // "b"
573+
```
574+
575+
#### Material Útil
576+
577+
- [ES6 Features - Destructuring Assignment (Funcionalidades ES6 - Atribuição de Destruturação)](http://es6-features.org/#ArrayMatching)
578+
- [Destructuring Objects - WesBos](http://wesbos.com/destructuring-objects/)
579+
- [ExploringJS - Destructuring](http://exploringjs.com/es6/ch_destructuring.html)

0 commit comments

Comments
 (0)