JavaScript Brain Teasers
JavaScript Brain Teasers
Resumo:
Introdução
O livro «JavaScript Brain Teasers» de autoria de Fr. Kinlan (2019, 200 páginas) não é mais um manual de sintaxe ou frameworks. É uma coleção de problemas desafiadores e quebra-cabeças que farão você olhar para construções aparentemente familiares do JavaScript de uma nova maneira. Ao contrário dos problemas clássicos do LeetCode, o foco aqui está nas sutilezas da linguagem, no comportamento não óbvio de closures, protótipos, assincronicidade e contexto this. O livro foi escrito para o ambiente de execução Node.js, mas todos os exemplos podem ser facilmente reproduzidos em qualquer navegador moderno.
Sobre o que é o livro
«JavaScript Brain Teasers» consiste em 50 (ou por volta disso) quebra-cabeças cuidadosamente selecionados. Cada problema é apresentado como um pequeno trecho de código, após o qual o leitor é convidado a adivinhar o que o console exibirá (ou qual será o resultado da execução). Em seguida, vem uma análise detalhada: por que funcionou dessa forma, quais mecanismos da linguagem estão envolvidos e como evitar tais "surpresas" no desenvolvimento real. Os tópicos abordados incluem:
- Coerção de tipos e igualdade não estrita (
==vs===); - Closures e escopo léxico;
- Herança prototípica e cadeia de protótipos;
- Assincronicidade: callbacks, promises, Event Loop;
- Contexto
thise suas ligações não óbvias; - Comportamento de
var,let,constem loops e blocos; - "Armadilhas" no trabalho com arrays e objetos;
- Particularidades dos operadores
typeof,instanceof,delete.
Para quem é este livro
O livro é voltado para desenvolvedores JavaScript praticantes de nível Júnior+ e Pleno. Para iniciantes que estão apenas começando a aprender a linguagem, ele parecerá muito difícil e possivelmente desmotivador. No entanto, aqueles que já escrevem código em JavaScript há pelo menos seis meses a um ano encontrarão nele um material inestimável para aprofundar sua compreensão. O livro também será útil para quem está se preparando para entrevistas técnicas: muitos problemas são muito semelhantes às "perguntas capciosas" de entrevistas em grandes empresas de TI.
O que o leitor aprenderá
Ao trabalhar todos os quebra-cabeças, o leitor:
- Deixará de temer a coerção implícita de tipos e aprenderá a prever seus resultados;
- Compreenderá profundamente o mecanismo de funcionamento de
thisem vários contextos (global, método de objeto, construtor, função arrow); - Dominará as nuances do funcionamento do Event Loop e da fila de microtarefas;
- Aprenderá a distinguir problemas reais de características "ruidosas" da linguagem;
- Será capaz de escrever código mais confiável e previsível, evitando armadilhas comuns;
- Aprimorará a habilidade de ler código de outros e encontrar erros ocultos.
Pontos fortes
A principal vantagem do livro é o formato. Em vez de teoria chata, você obtém uma experiência interativa: lê o código, faz uma suposição, verifica a si mesmo, lê a explicação. Isso é muito eficaz para a memorização. O autor não apenas mostra "magia", mas explica os mecanismos internos, referindo-se à especificação ECMAScript. Outro ponto positivo é a compacidade: 200 páginas sem enrolação, apenas o essencial. O livro é bem estruturado: de problemas simples a complexos, com um aumento gradual de profundidade. Vale destacar também que todos os exemplos são relevantes para o padrão moderno ES6+ (embora o livro tenha sido lançado em 2019, os conceitos principais não ficaram desatualizados).
Para quem é recomendado
Eu recomendo «JavaScript Brain Teasers» a todos que desejam passar do nível "apenas escrevo código" para o nível "entendo como a linguagem funciona". É um excelente treinador para a mente, que pode ser lido em pequenas doses — um ou dois problemas por dia. O livro também será um bom presente para um colega desenvolvedor que gosta de resolver quebra-cabeças. Se você ensina JavaScript, pode usar os problemas do livro como aquecimento no início das aulas. A única limitação: não deve ser dado a iniciantes absolutos — é melhor primeiro dominar os fundamentos com algum livro clássico (por exemplo, "Expressões Regulares" ou "JavaScript: O Guia Definitivo").