在重新声明之前立即在功能块内记录全局变量未定义:它不应该采用全局变量值吗?

时间:2017-03-17 05:15:02

标签: javascript ecmascript-6

let pages =100;
let pageFunction=()=>{
 console.log(pages);
 const pages = "20";
 //console.log(pages);
}
pageFunction();

输出: 未捕获的ReferenceError:未定义页面     在pageF(:3:13)     at:1:1

1 个答案:

答案 0 :(得分:1)

根据Mozilla的说法“let语句声明了一个块作用域局部变量,可选择将其初始化为一个值。”另外,“在程序和函数的顶层,与var不同,不要在全局对象上创建属性。”

请参阅 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let了解更多信息。

这意味着在你给你的代码中有效地创建了一个隐式的全局变量页面,因为让页面不是真正的全局,而是局限于它所在的范围。