Em versões anteriores de JavaScript, uma variável pode ter escopo em dois nÃveis
- Âmbito global
- Escopo da Função
Não há escopo bloqueado disponÃvel no idioma anterior. Então, o que se entende por escopo bloqueado
Na maioria das chaves de linguagem ({}) cria o escopo para a variável. variáveis ​​vivem e morrem dentro do escopo da variável. Mas não em JavaScript, veja o exemplo abaixo
Por exemplo
var x = 2; //I am global scope
var functionScope = function (flag) {
if (flag) {
var scopedVariable = 3;
}
return scopedVariable
}
console.log(x); // Prints 2 out
console.log(functionScope(true)); // prints 3 out !! Why
console.log(functionScope(false)); //Prints undefined !! Why
Observe a maneira como “scopedVariable” dentro da função funciona, embora seja declarada entre colchetes, ela pode ser usada externamente para retornar o resultado. É devido à natureza do escopo da função da linguagem. Também é chamado de içamento variável (jargão)
Isso está sendo criticado como uma caracterÃstica pobre da linguagem e bom o suficiente para confundir a maioria dos programadores que vêm de outra linguagem.
Solução
A palavra-chave “let” vem para o resgate que traz o escopo do bloco para a linguagem e fornece uma maneira melhor de entender o programa. Aqui está uma nova tentativa no exemplo acima
var x = 2; //I am global scope
var functionScope = function (flag) {
if (flag) {
let scopedVariable = 3;
}
return scopedVariable
}
console.log(x); // Prints 2 out
console.log(functionScope(true)); //throws error
console.log(functionScope(false)); //throws error
Os lançamentos de implementação de palavra-chave “let” são erros de compilação (no navegador), assim como a outra linguagem, em vez de fornecer indefinido. Este recurso deixará os programadores de outras linguagens mais confortáveis ​​e, como linguagem, trará um pouco mais de segurança de uso.
Para brincar com este recurso, use a configuração abaixo
Configuração Traceur
Como apontado em meu blog anterior, o ES6 não está implementado em todos os navegadores. Portanto, para experimentar os recursos, você precisa usar uma biblioteca externa chamada Treceur. Como “let” é um recurso experimental, precisamos torná-lo explÃcito. Isso pode ser feito usando
<script>
traceur.options.experimental = true;
</script>
Nada termina sem o êmbolo e o exemplo para todos trabalharem.
http://plnkr.co/edit/nEgd1Uni4vnSXAEqLVpS?p=preview
Melhores práticas para Es6
Sempre use ‘let’ para declaração de variável para evitar a confusão