![Thirty Days Of JavaScript](/images/banners/day_1_2.png)
- [📔 Dia 2](#-dia-2)
- [Tipo de Dados](#tipo-de-dados)
- [Tipo de Dados](#tipos-de-dados)
- [Tipos de Dados Primitivos](#tipos-de-dados-primitivos)
- [Tipos de Dados Não Primitivos](#tipos-de-dados-não-primitivos)
- [Números](#Números)
@ -46,7 +46,7 @@
# 📔 Dia 2
## Tipo de Dados
## Tipos de Dados
Na sessão anterior, nós mencionamos um pouco sobre tipos de dados. Tipos de dados decrevem as caracteristicas do dado, e podem ser divididos em duas categorias:
@ -58,44 +58,34 @@ Na sessão anterior, nós mencionamos um pouco sobre tipos de dados. Tipos de da
Tipos de dados primitivos em JavaScript inclui:
1. Numbers - Inteiros, floats
2. Strings - Any data under single quote, double quote or backtick quote
3. Booleans - true or false value
4. Null - empty value or no value
5. Undefined - a declared variable without a value
6. Symbol - A unique value that can be generated by Symbol constructor
2. Strings - Qualquer dado entre aspas simples, aspas duplas e crase
3. Booleans - valores verdadeiros e falsos
4. Null - valor vazio ou sem valor
5. Undefined - variável declarada sem um valor
6. Symbol - Um valor único que pode ser gerado por um construtor de símbolo
Tipos de dados não primitivos em JavaScriot inclui:
Primitive data types in JavaScript include:
1. Objetos
2. Arrays
1. Numbers - Integers, floats
2. Strings - Any data under single quote, double quote or backtick quote
3. Booleans - true or false value
4. Null - empty value or no value
5. Undefined - a declared variable without a value
6. Symbol - A unique value that can be generated by Symbol constructor
Agora, vamos ver exatamente oque significa tipos de dados primitivos e não primitivos.
*Primitivo* são tipos de dados imutáveis(nao-modificável). Uma vez criado um tipo de dado primitivo nós não podemos mais modifica-lo.
Non-primitive data types in JavaScript includes:
1. Objects
2. Arrays
Now, let us see what exactly primitive and non-primitive data types mean.
*Primitive* data types are immutable(non-modifiable) data types. Once a primitive data type is created we cannot modify it.
**Example:**
**Exemplo:**
```js
let word = 'JavaScript'
```
If we try to modify the string stored in variable *word*, JavaScript should raise an error. Any data type under a single quote, double quote, or backtick quote is a string data type.
Se nós tentarmos modificar uma string armazenada na variável *word, JavaScrip irá mostar um error. Qualquer dados entre aspas simples, aspas duplas, ou aspas é um string tipo de dado.
```js
word[0] = 'Y'
```
This expression does not change the string stored in the variable *word*. So, we can say that strings are not modifiable or in other words immutable.
Primitive data types are compared by its values. Let us compare different data values. See the example below:
Esta expressão não muda a string armazenada na variável *word*. Então, podemos dizer que strings não são modificavéis ou in outras palavras imutáveis.
Tipos de dados primitivos são comparados pelo seu valor. Vamos comparar valores de dados diferentes. Veja o exemplo abaixo:
*Non-primitive* data types are modifiable or mutable. We can modify the value of non-primitive data types after it gets created.
Let us see by creating an array. An array is a list of data values in a square bracket. Arrays can contain the same or different data types. Array values are referenced by their index. In JavaScript array index starts at zero. I.e., the first element of an array is found at index zero, the second element at index one, and the third element at index two, etc.
*não primitivos* são tipos de dados modificáveis ou mutáveis. Nós podemos modificar o valor de um dado tipo não primitivo depois de criado.
Vamos ver isso criando um array. Um array é uma lista de valores de dados entre colchetes. Arrays que contém o mesmo ou diferente tipos de dados. Valores de Arrays são referenciados pelo seu index. Em JavaScript o index do array começa em zero. em outras palavras, o primeiro elemento de um array é encontrado no index zero, o segundo elemento no index um, e no terceiro elemento no index dois, etc.
```js
let nums = [1, 2, 3]
nums[0] = 10
nums[0] = 1
console.log(nums) // [10, 2, 3]
console.log(nums) // [1, 2, 3]
```
As you can see, an array, which is a non-primitive data type is mutable. Non-primitive data types cannot be compared by value. Even if two non-primitive data types have the same properties and values, they are not strictly equal.
Como você pode ver, um array, que é um tipo de dado não primitivo é mutável. Tipos de dados nao primitivos nao podem ser comparador pelos seus valores. Mesmo se dois tipos de dados não primitivos tem as mesmas propriedades e valores, eles não podem ser estritamentes iguais.
```js
let nums = [1, 2, 3]
@ -149,8 +139,7 @@ country:'Finland'
console.log(userOne == userTwo) // false
```
Rule of thumb, we do not compare non-primitive data types. Do not compare arrays, functions, or objects.
Non-primitive values are referred to as reference types, because they are being compared by reference instead of value. Two objects are only strictly equal if they refer to the same underlying object.
Regra de ouro, nos nao comparamos tipos de dados nao primitivos. Nao se compara arrays, funções, ou objetos. porque eles são comparados pela sua referencia ao invez do valor. Dois objetos só são estritamentes iguais se a sua referência for o mesmo objeto subjacente.