Olá ouvintes do CoderCast, Me chamo Micael Pereira e nesse podcast vou falar sobre os 4 segredos do JavaScript. Vamos ao cast pois falaremos sobre esses segredos!
1 ponto é: Null é um objeto
Bom isto é um bug e esse infelizmente não pode ser resolvido, porque pode ter quebra no código. Vamos ver um pouco de história. O “typeof(null)” é um bug remanescente desde a primeira versão do JavaScript. Nesta versão os valores foram armazenados em 32 bits, que consistia de pequenos tipos de tag de 1 a 3 bits e os dados reais do valor. O erro parece ser muito óbvio, mas não podemos esquecer que a primeira versão foi criada em muito pouco tempo.
Não quero somente falar a parte histórica, preciso falar o que seria o correto quando se faz um “typeof(null)” seria retornar null e não um object.
Diferenças entre null e undefined
typeof(null) retorna um object.
typeof(undefined) retorna undefined
null === undefined retorna falso
null == undefined retorna verdadeiro
2 ponto é: NaN é um number
NaN não é uma keyword como (true, false) é uma propriedade global NaN é um valor especial que significa Not-A-Number em inglês, e em português seria (não é um número). Ele foi implementado na primeira versão do JavaScript.
Não é usual a utilização do NaN. Ele é retornado quando uma operação matemática falha ou quando uma função tenta tranformar uma string em inteiro.
Testando um valor NaN
NaN === NaN é falso
Number.NaN === NaN é falso
isNaN(NaN) é verdadeiro
isNaN(Number.NaN) é verdadeiro
3 ponto é: Um array vazio é igual a falso
Se fizermos um teste e colocarmos um array vazio == [] o retorno será false. Pois infelizmente não há uma boa maneira de comparar objetos no JavaScript a não ser que se use recursividade e vamos acessando todos as propriedades.
E Array é uma instancia de Object em JavaScript.
Então a melhor maneira é testando o length do array.
4 ponto é: Funções podem executar elas mesmas
Uma função é um fragmento de código que pode ser invocado por outro código, por si mesmo ou uma variável que se refere a função.
Para exemplificar essa recursividade vou usar o exemplo de um loop.
function loop(x){ if(x >= 10) return; loop(x + 1); };
A função no JavaScript pode ser também invocada imediatamente após a função ser carregada no compilador. Existe uma sigla para esse tipo de função em inglês que é IIFE.
A maneira de identicar uma IIFE é localizar os parênteses extras a esquerda. Deixarei um exemplo no post.
(function logExecution() { console.log("Log for Execution"); }());
O que não é segredo
Todos sabemos que é possível criar apps mobile, usar no front-end e no back-end JavaScript. Tendo essa informação é muito melhor estudar a linguagem, pois tem JavaScript em todos os lugares. E quem está falando isso não é uma empresa. Como aconteceu com o Java. É a comunidade.
Dicas:
Deixarei aqui alguns cursos que ajudarão a quem deseja evoluir com JavaScript.
React Native o link é: link
Vuejs, o framework progressivo: link
E o meu curso de Node com Redis, cache pode salvar sua performance: link
E por ultimo, deixo uma pergunta:
gostaria de saber: O que você acha dessa amável linguagem?
Mande a sua mensagem. No twitter eu sou o @MicaelPereira_ no Instagram @guiadev_ me siga lá e comente sobre o podcast com seus amigos devs ajudando o crescimento do podcast.Caso queira mandar e-mail para entrar em contato o e-mail é [email protected]