Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 起重内部功能_Javascript - Fatal编程技术网

Javascript 起重内部功能

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(); 让变量在计算其定义之前不会初始化。 在初始化之前访问变量会导致引用错

有人能解释一下下面的代码吗

函数b中myVar的值是多少

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)。