我正在尝试理解新的函数语法。
当我使用let it声明变量'value'时,我得到一个错误
ReferenceError: value is not defined
,但如果我使用var或不使用var,输出将打印为test。我假设'value'变量是全局的,因为它是在外部定义的。
但是为什么它与var一起工作,而不是让,虽然两者都是全局变量?
let value = "test";
function getFunc() {
// value = "test";
let func = new Function('console.log(value)');
return func;
}
getFunc()();
在顶层,let
不像var
那样在全局对象上创建属性。
var foo = "Foo"; // globally scoped
let bar = "Bar"; // not allowed to be globally scoped
console.log(window.foo); // Foo
console.log(window.bar); // undefined
参考
因此,let
只能在{}
表示的封闭块内使用。