Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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_Scope_Hoisting - Fatal编程技术网

起重和';让';在JavaScript中

起重和';让';在JavaScript中,javascript,scope,hoisting,Javascript,Scope,Hoisting,问题是: 为什么这不会引发引用错误: console.log(a) let a = 5; { console.log(a) let a = 5; } 但这会引发一个引用错误: console.log(a) let a = 5; { console.log(a) let a = 5; } 现在,如果我们使用'var',那么在这两种情况下,代码都将运行并注销'undefined',但是有人能解释一下'let'(和'const')发生了什么。如注释中所述,这两种情况都会引发引用错误

问题是:

为什么这不会引发引用错误:

console.log(a)
let a = 5;
{
 console.log(a)
 let a = 5;
}
但这会引发一个引用错误:

console.log(a)
let a = 5;
{
 console.log(a)
 let a = 5;
}

现在,如果我们使用'var',那么在这两种情况下,代码都将运行并注销'undefined',但是有人能解释一下'let'(和'const')发生了什么。

如注释中所述,这两种情况都会引发引用错误

控制台日志(a)
设a=5都抛出一个引用错误。我在Node和Chrome的控制台中尝试了第一个代码,但都抛出了一个“ReferenceError”,我无法重现您描述的行为。您确定在显示测试代码之前,您的作用域中没有
a
的定义吗?@即使这样,它也会抛出。请注意您所写的内容:您的两个代码块完全相同。现在,你的问题是什么?我对你的答案投了赞成票,这是完全正确的,尽管毫无用处:这个问题本身显示出基本上不愿意参考现有的文档。