我是 Javascript 新手,我不明白范围在以下代码中如何工作:
//Code n°1:
let num = 1;
function test(){
console.log(num);
}
test() //As I expected I get in console "1"
//Code n°2:
let num = 1;
function test(){
let num = 2;
console.log(num);
}
test() //As I expected I get in console "2"
但问题是:
//Code n°3:
let num = 1;
function test(){
console.log(num)
let num = 2;
console.log(num);
}
test() //I expected to get in console "1" and then "2" but instead I get an error.
当我在浏览器中运行代码 n° 3 时,我收到此错误: Uncaught ReferenceError :在初始化之前无法访问词法声明“num”
如果我查看代码 1 和 2,我想在运行代码 3 后,我将在控制台中看到数字 1,然后是数字 2。但这并没有发生。为什么?
非常感谢!
最佳答案
当在初始化之前访问词法变量时,会发生 JavaScript 异常“在初始化之前无法访问词法声明‘变量’”。当在定义之前访问 let 或 const 声明时,这种情况会发生在任何 block 语句中。
关于javascript - 为什么我无法在这个简单的函数中访问这个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63821129/