Ontem parei para assistir mais uma palestra do Douglas Crockford.
Já falei aqui que o cara é amado e odiado na comunidade JavaScript, e creio que existe muito mito em torno disso.
Como programadores JavaScript, devemos prestar atenção em um fato: O Crockford entende muito da linguagem JavaScript. Provavelmente mais que todos nós.
Digo isso porque o embasamento nas teorias do Crockford fazem muito sentido, e apresentadas por ele, mostram que ele realmente entende do que esta falando.
Depois de longos anos estudando JavaScript, ainda não me considero apto a dizer que sou ninja, e que sei tudo. Até porque isso seria muita presunção minha.
O fato é o que o Crockford sim, parece ser ninja e parece saber tudo sobre a linguagem, então o mínimo que posso fazer é ouvir o homem, prestar atenção e correr atrás para quem sabe um dia ter o conhecimento suficiente para questionar as teorias do Douglas.
Durante a palestra o Crockford provou por a + b suas teorias. Abaixo compartilho algumas:
Colocar a chave {
na direita
Ex:
block {
...
}
Por costume, eu sempre coloco na direita mesmo. Mas muitos programadores colocam na esquerda, assim:
block
{
...
}
A moral é que isso não importa. Na direita ou na esquerda, não importa…
Exceto no JavaScript. Rá!
Sim, para o JavaScript faz diferença, por um motivo simples.
Vejam o código:
return
{
ok : false
}
Este código irá falhar.
Se queremos retornar um objeto literal, devemos sempre colocar a “{” na direita, porque neste caso o JavaScript retorna undefined.
Uma diferença sútil, e o seu programa não irá falhar:
return {
ok : false
}
Usar sempre ===
ao invés de =
Sempre tive a pulga atrás da orelha com essa premissa do Crockford. Mas ele explicou o porque, e de fato faz sentido.
O ==
não funciona muito bem no JavaScript. Até mesmo o Brendan sabia disso quando criou a linguagem.
O que aconteceu foi que quando a linguagem foi padronizada, o Brendan tentou corrigir isso com o comitê, mas a Microsoft insistiu que não deveria ser feito.
Porque diabos? Não sei.
Mas o Brendan conseguiu ao menos implementar o ===
, então esse é o motivo de o porque sempre utilizar ===
.
Alguns exemplos que provam a falha do ==
:
0 == '' //true
'' == '0' //false
0 == '0' //true
false == 'false' //false
false == '0' //true
// E o mais bizarro de todos
" trn " == 0 //true
Declarar variáveis sempre no topo do corpo da função
Item bem interessante.
O Douglas explica na palestra que o JavaScript é diferente de outras linguagens em relação ao escopo de variáveis.
Em outras linguagens, devemos sempre declarar variáveis o mais próximo possível de onde vamos usa-las.
No JavaScript é bem o contrário.
Devemos sempre declarar as variáveis no topo da função, poque de fato é isso que acontece, essa é a primeira coisa que é feita no fluxo da execução.
Antes do vídeo, deixo uma frase que achei muito interessante:
>Se existe uma feature de uma linguagem que às vezes é problemática, e se ela pode ser substituída por uma outra feature que é mais confiável, então sempre use a feature mais confiável
Faz muito sentido.
Bom, RECOMENDO que todos vejam este vídeo. Mesmo os que não gostam do Crockford. Alias, principalmente os que não gostam.
Abram a mente, escutem, estudem, pesquisem.
O título do post “JavaScript, História e Ciência” deve-se ao fato de que a palestra do Crockford é isso.
Uma aula de JavaScript, obviamente. Mas não só isso. É uma aula de história, onde ele conta vários fatos sobre diversas pessoas e linguagens. E também é uma aula de ciência, onde ele consegue fazer um link muito inteligente entre as confusões do nosso cerébro e a programação.
Vale muito a pena. Parem 1 hora e vejam.