On Github nubunto / scope-chains-closures-talk
var nome = 'Pablo Escobar'; function dizerNome() { return alert('olá querido leitor'); }O contexto global é a janela do navegador, acessível pelo objeto window.
function figuraOculta() { var oculta = 'cachorro'; return alert('Existe uma figura oculta, que é um ' + oculta + ' atras.'); } alert(atras); // erroAo contrário do escopo global, as variáveis dentro de uma função pertencem a função que engloba estas variáveis. Vale lembrar que em JavaScript, declarações sem var resultam na variável sendo jogada para o escopo global.
function digaNome(nome) { function capitalizar() { return nome[0].toUpperCase() + nome.substr(1).toLowerCase(); } return alert(capitalizar()); } digaNome("RoBeRTO"); // alerta "Roberto". // alertarNome() -> erro!As regras são as mesmas.
function digaNome(nome) { function capitalizar() { return nome[0].toUpperCase() + nome.substr(1).toLowerCase(); } return alert(capitalizar()); }Mesmo que eu não tenha declarado a variável nome dentro da função alertarNome, consigo usar este valor dentro da função "de dentro".