Javascript 起重内部功能
有人能解释一下下面的代码吗 函数b中myVar的值是多少Javascript 起重内部功能,javascript,Javascript,有人能解释一下下面的代码吗 函数b中myVar的值是多少 function a() { function b() { console.log("b", myVar); } b(); let myVar; console.log("a", myVar); //Look for a execution context } a(); 让变量在计算其定义之前不会初始化。 在初始化之前访问变量会导致引用错
function a() {
function b() {
console.log("b", myVar);
}
b();
let myVar;
console.log("a", myVar); //Look for a execution context
}
a();
让变量在计算其定义之前不会初始化。
在初始化之前访问变量会导致引用错误将myVar声明为var,而不是folet。 它会给你未定义的。 所以这是一个简单的关键字let概念,而不是函数内部的提升概念。 只运行下面的代码。您将得到相同的错误
console.log(number); //Reference error
let number= 1;
它从不初始化-它从不获取值,并且在初始化之前被访问,因此它会抛出。
let
不同于var
-请参阅-这不是Stephen King的缩写story@CertainPerformance,难道myVar不应该被提升到函数“a”中的顶部,而b函数在词汇上位于函数“a”中吗函数应查看其上限(即父级“a”)不是。myVar应提升到函数“a”内的顶部,而“b”在词汇上位于“a”函数内,它应查看其上限(即父级“a”)。不,myVar被提升,但在进入范围和被声明之间的一段时间内无法访问。这一时期是时间死区(TDZ)。