da2k / curso-javascript-ninja

Curso Javascript Ninja
http://blog.da2k.com.br/curso-javascript-ninja/
2.34k stars 2.95k forks source link

[Aula 20] Dúvida em um termo #10214

Closed anarsantos closed 8 months ago

anarsantos commented 8 months ago

Olá senhor Fernando! Depois do Regex tô semi viva! rs Mas enfim, decidi que vou assistir às aulas umas 20 vezes para tentar ter dúvida, nesse momento estou existindo.

Mas a dúvida do momento é sobre uma expressão que você falou algumas vezes e não entendi. No vídeo 122, no minuto 11:40 aproximadamente. Você fala do querySelectorAll, você diz: array light ou array line? O que é isso? O que come? Como se reproduz?

Não entendi bem os parâmetros da IIFE: no primeiro parâmetro você colocou abreviado, por quê? E por que segundo está o nome completo? O primeiro é usado dentro da função né?

(function(win, doc) {

})(window, document);

Desculpa, ainda não tenho sua habilidade de deixar o texto todo grifado, bonitinho. rs

@fdaciuk

fdaciuk commented 8 months ago

Oi @anarsantos! Vamos lá:

Mas a dúvida do momento é sobre uma expressão que você falou algumas vezes e não entendi. No vídeo 122, no minuto 11:40 aproximadamente. Você fala do querySelectorAll, você diz: array light ou array line? O que é isso? O que come? Como se reproduz?

É array like: um tipo de dado (lista) que "se parece" com um array, e tem as características de array que você conhece:

Mas por mais que se pareça com um array, ele não é criado com o objeto Array (que é o que acontece quando você usa o [] para criar um array vazio, por exemplo).

Porque essa lista não é criada com o objeto Array, ele não compartilha os mesmos métodos que você tem disponíveis no array: map, filter, reduce, etc.

Esse tipo de lista têm seus métodos próprios, por isso é um array like, não um array de verdade =)

Sobre a IIFE, os parâmetros passados win e doc são nomes de variáveis que irão receber o window e document respectivamente. Como a IIFE é uma função auto-executável, os parênteses ao final dela são referentes à execução.

É quase a mesma coisa que criar uma função normal e depois executar ela, dessa forma:

function iife (win, doc) {
  // aqui o corpo da função
}

// aqui a execução da função, passando o `window` e `document`, que serão recebidos
// dentro da função `iife` como `win` e `doc` =)
iife(window, document) 

Normalmente nós renomeamos pra não ter problema de esquecer de passar os argumentos e acabarmos fazendo alguma modificação nos objetos originais, mas você pode chamar do que quiser =)

Sobre deixar o código bonitinho, quando você abre uma nova issue tem um comentário explicando como fazer: é basicamente colocar 3 crases antes (passando a linguagem logo depois da crase) e 3 crases depois do código que ele fica assim, colorido =)

Dessa forma (vou postar o exemplo acima como imagem pro GitHub não renderizar e você conseguir ver exatamente como eu escrevi):

image


Acho que é isso! Me deixe saber se ficou tudo claro, ou se ainda restou alguma dúvida =)

anarsantos commented 8 months ago

Sim, senhor professor! Ficou tudo claro rs. Vou fazer os precessamento agora rs

fdaciuk commented 8 months ago

Perfeito! Qualquer dúvida manda aí :D