O autor passa por vários aspectos da linguagem como: sintaxe, objetos, arrays, regex e sobre organização de código. Mas os tópicos mais interessantes do livro, com certeza são os que abordam funções, herança e os apêndices que abordam as partes ruins do Javascript e como evitá-las.
No capítulo sobre funções ele aborda assuntos importantes no dia-a-dia de quem usa muito javascript como escopo de função, Closure, callbacks. Esses assuntos podem trazer alguma confusão quando o background do programador é de linguagens que não suportam tals features, especialmente Closure e callbacks. Funções como cidadões de primeira classe (ou de primeira ordem), apesar de ser algo comum em várias linguagens modernas, como Python e Ruby, não é suportado por linguagens como Pascal e Java que são largamente usadas em faculdades e escolas técnicas. O que pode causar estranheza em grande parte dos programadores ao ver um código Javascript que use isso.
Outra caracteristica pouco compreedida por alguns e muito bem explicada pelo Crockford no livro, é o conceito de herança em Javascript, que usa Herança por protótipo. Na Herança por protótipo, basicamente, objetos herdam diretamente de outros objetos. Não existe o conceito de classes.
A primeira linguagem que implementou herança por protótipo, foi a linguagem Self. Outras linguagens, como Lua e Io, também usam esse esquema de herança. O entendimento de herança as vezes é camuflado em uma sintaxe que lembra o conceito clássico de orientação a objetos. No livro são mostradas várias formas de se fazer herança em Javascript.
Já nos apêndices do livro, Crockford aborda como evitar as partes ruins do Javascript. Um dos exemplos que é mais simples é o uso do operador '==', que pode causar muita confusão e difucultar na hora de debugar algum código. Por exemplo:
'' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' \t\r\n ' == 0 // trueUsando o operador '===' todos os resultados acima resultariam false.
'' === '0' // false 0 === '' // false 0 === '0' // false false === 'false' // false false === '0' // false false === undefined // false false === null // false null === undefined // false ' \t\r\n ' === 0 // falseO Livro, apesar de pequeno, 172 páginas, contém bastante conteúdo e é uma ótima referência para quem deseja se aprofundar em Javascript. Recomendo.
Nenhum comentário:
Postar um comentário