In JavaScript, var
dichiarazioni creare proprietà sull'oggetto globale:Le istruzioni let creano proprietà sull'oggetto globale?
var x = 15;
console.log(window.x); // logs 15 in browser
console.log(global.x); // logs 15 in Node.js
ES6 introduce scoping lessicale con let
dichiarazioni che hanno portata blocco.
let x = 15;
{
let x = 14;
}
console.log(x); // logs 15;
Tuttavia, queste dichiarazioni creano proprietà sull'oggetto globale?
let x = 15;
// what is this supposed to log in the browser according to ES6?
console.log(window.x); // 15 in Firefox
console.log(global.x); // undefined in Node.js with flag
@ jfriend00 sì, e si comporta _differentemente_ in Firefox e in io.js che sono i due ambienti con cui posso testarlo. –
In repl di node.js, se si esegue 'var x = 15', lo si circoscriverà all'ambito globale che è possibile verificare facilmente digitando' global.x' nella riga seguente. –
Domanda: Esiste un 'LexicalEnvironment' e 'EnvironmentRecord' associato all'ambito globale? – Ben