Ferramentas que te ajudam a se tornar um DEV mais eficiente

Se você está se preparando para uma entrevista de desenvolvedor sênior em JavaScript ou apenas quer testar seus conhecimentos, este artigo é para você. Vamos explorar algumas das perguntas mais avançadas, cobrindo desde conceitos orientados a objetos até o loop de eventos, com exemplos de código para ajudar na compreensão.
1. O que o seguinte código imprime? Por quê?
“`javascript
const obj = {
name: ‘obj’,
getName: function() {
return function() {
return this.name;
}
}
}
const fn = obj.getName();
fn();
“`
Resposta: undefined
Análise: A função interna de getName
é executada no escopo global, então this
aponta para window/global
, e window/global
não possui uma propriedade name
, portanto, é retornado undefined
.
Para que o this
da função interna também aponte para obj
, pode-se usar uma função seta ou bind
para vincular this
:
“`javascript
const obj = {
name: ‘obj’,
getName: function() {
return () => {
return this.name;
}
}
}
“`
2. Implemente uma fábrica de contadores:
“`javascript
function createCounter() {
let count = 0;
return function() {
return count++;
}
}
const counter1 = createCounter();
const counter2 = createCounter();
console.log(counter1()); // 0
console.log(counter1()); // 1
console.log(counter2()); // 0
“`
Análise: A razão pela qual os contadores podem ser incrementados independentemente é devido à característica de fechamento usada. A função createCounter
cria um fechamento que pode acessar a variável count
no escopo externo. counter1
e counter2
referem-se a diferentes instâncias de função de fechamento, alcançando assim a independência de contagem.
3. Mecanismo de Loop de Eventos
O loop de eventos é um mecanismo crucial no JavaScript, especialmente no ambiente de execução do navegador ou do Node.js, que permite a execução assíncrona de operações. Entender o loop de eventos é vital para a otimização de aplicações web, garantindo que elas permaneçam responsivas e eficientes.
Em sua essência, o loop de eventos funciona como uma fila de mensagens. Sempre que uma função assíncrona é chamada (como setTimeout, promises ou eventos do DOM), ela é adicionada à fila de mensagens. O loop de eventos processa essas mensagens uma de cada vez, garantindo que uma única operação seja executada no thread principal, prevenindo condições de corrida e outros problemas de concorrência.
Exemplo Prático
“`javascript
console.log(‘Início’);
setTimeout(() => {
console.log(‘Timeout 1’);
}, 1000);
setTimeout(() => {
console.log(‘Timeout 2’);
}, 0);
console.log(‘Fim’);
“`
Neste exemplo, a saída no console será:
Início Fim Timeout 2 Timeout 1
Isso acontece porque, embora Timeout 2
tenha um delay de 0 ms, ele ainda é colocado na fila de mensagens e só será executado após o código síncrono (início e fim) ser concluído.
Para aprofundar ainda mais seu conhecimento sobre o loop de eventos, recomendo a leitura deste artigo detalhado na MDN.
Se você tem interesse em explorar mais sobre JavaScript assíncrono, consulte também a documentação completa sobre Promises e async/await no MDN.
Compartilhe suas dúvidas ou experiências com estas questões nos comentários abaixo. Vamos aprender juntos!
Autor
flpchapola@hotmail.com
Posts relacionados

Desmistificando o desenvolvimento: o que realmente importa além de escrever código
Ser um desenvolvedor não se resume apenas a escrever código. Na verdade, escrever código é uma das atividades menos importantes em uma...
Leia tudo
Substituindo ESLint e Prettier: Biome simplifica linting e formatação em um só lugar!
Nos meus novos projetos, tenho substituído o ESLint e Prettier pelo Biome. Um dos grandes destaques do Biome é que ele já...
Leia tudo
“Recupere sua vida: um emprego é só uma parte dela; tenha um plano B e valorize seu tempo pessoal”
Em um mundo empresarial cada vez mais dinâmico e volátil, é importante entender a natureza temporária dos empregos. Desapegar-se da noção de...
Leia tudo
Vale a Pena Virar Programador Agora?
O Mercado de Tecnologia em Transformação O mercado de tecnologia está em constante evolução, e a análise de tendências é fundamental para...
Leia tudo
Todo desenvolvedor deve aprender a se vender: você é sua própria marca e o código é seu produto.
Todo desenvolvedor deve estudar vendas. Não necessariamente para fins comerciais, mas para aprender a vender a si mesmo. Pense nisso: você é...
Leia tudo
“7 Frases Pequenas, mas Poderosas, que Confortam e Acolhem em Momentos de Dificuldade”
As palavras têm um poder imenso sobre nossas emoções e nossa resiliência. Em tempos de adversidade, uma frase encorajadora pode ser a...
Leia tudo