Conceitos fundamentais sobre o ciclo de vida do Javascript Flashcards

Conceitos básicos sobre o funcionamento do Javascript

1
Q

Para que é usada a diretiva use strict em um arquivo JS?

A

Garante uma série de validações com o objetivo de evitar erros de semânticas silenciosas no JS.

Exemplos: atribuir valores a variáveis inexistentes, criar variáveis com palavras reservadas…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais são todos os tipos primitivos do JS?

A

number, string, boolean, null, undefined, symbol

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que significa dizer que tipos primitivos são imutaveis?

A

Significa que o valor de uma variável de um tipo primitivo não pode mudar.

O que não significa que a variavel não pode ser reatribuída com um novo valor. Mas na memória é criado uma nova referência, enquanto a antiga permanece intacta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que é e o que faz o Garbage Collection do JS?

A

No JS tem um garbage collection automatico que quando uma variável não tem mais referencias no código, ela é limpa da memória. Isso faz com que a linguagem não seja tão otimizada como o C por exemplo onde o próprio programador precisa limpar a memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que são: a Call stack e a memory heap?

A

A call stack é a pilha de armazenamento de ações do JS, é uma pilha “Last In, First Out” que o JS mantém as chamadas do código.

A memory heap é onde o JS mantém os valores de tipos não primitivos que podem crescer dinamicamente e de forma desordenada (Objects e Arrays)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cite exemplos de erros comuns que podem resultar em vazamento de memória

A

As principais formas de gerar um vazamento de memória no JS são: criar muitas variáveis globais, adicionar event listeners e não remove los quando não são mais necessários, uso da função setInterval com um callback (só é limpo da memória quando o setInterval em si é removido)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

O que significa que uma função é pura no JS? E qual o impacto das funções impuras?

A

Funções puras não alteram variáveis fora do seu escopo, enquanto funções consideradas inpuras alteram objetos passados por parametro.

Como todo objeto passado como argumento para uma função é apenas uma referência, qualquer mudança no objeto vai alterar o objeto principal e não apenas no escopo da função, isso pode ser um comportamento indesejado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que é coerção implícita?

A

Coerção implícita é a que acontece de forma “automática” pela linguagem, sem o programador ter explicitamente convertido algum valor, como por exemplo na sintaxe de comparação 32 == “32” // true.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que é coerção explícita?

A

A Coerção explicita é feita através de métodos que a própria linguagem nos provem para essa finalidade. Tal como String(1) por exemplo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Por que devemos evitar o uso do equality operator (==) e priorizar o uso do strict equality operator (===)?

A

Por que o equality operator (==) faz coerções implícitas podendo gerar comportamentos indesejados e imprevisíveis no código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qual o conteudo da variável result no código abaixo:

const result = “hello” || 1;

A

O valor da variável é “hello” pois quando usamos duplo pipe e o resultado da operação é verdadeiro é retornado o primeiro valor testado.

obs: As expressão de exemplo não retornam um boolean, mas sim um valor que dentro do IF é feito uma coerção implícita que torna o valor um booleano.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qual o conteudo da variável result no código abaixo:

const result = “hello” && 1;

A

O valor da variável é 1 pois quando usamos duplo and e o resultado da operação é verdadeiro é retornado o último valor testado.

obs: As expressão de exemplo não retornam um boolean, mas sim um valor que dentro do IF é feito uma coerção implícita que torna o valor um booleano.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que acontece no código abaixo:

const eu = {
name: “Vitor”,
year: 1997,
toString() {
return “isso e uma string”;
},
valueOf() {
return 0;
},
[Symbol.toPrimitive] (coercionType) {
return 7;
}
}

console.log(eu + 3)

A

O resultado será 10 pois o método Symbol.toPrimitive tem preferencia sob os outros métodos chamados na coerção de objetos.

Lembrando que para operações de string é chamado o método toString() e para operações numericas é chamado o valueOf(), porém o Symbol.toPrimitive tem preferência sobre esses métodos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que é o Prototype Chain?

A

Prototype chain é o nome do processo de pesquisa que o JS faz para pesquisar entre classes herdadas em busca de uma determinada propriedade. Quando tentamos buscar a existência de uma propriedade em um objeto o motor de busca do JS vai verificar se essa propriedade existe no objeto e caso não ache vai procurar no prototype do objeto e caso não exista vai buscar no prototype do prototype, assim sucessivamente até chegar na raiz que é null.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que é a propriedade .__proto__ de um objeto?

A

.__proto__ é a referência do objeto que possui as propriedades dele

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
A