В JavaScript объявления var
создают свойства глобального объекта:
var x = 15;
console.log(window.x); // logs 15 in browser
console.log(global.x); // logs 15 in Node.js
ES6 вводит лексическое определение с помощью let
деклараций с областью блока.
let x = 15;
{
let x = 14;
}
console.log(x); // logs 15;
Однако, создают ли эти объявления свойства на глобальном объекте?
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