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

Javascript 在重新声明之前立即在功能块内记录全局变量未定义:它不应该取全局变量值吗?,javascript,ecmascript-6,Javascript,Ecmascript 6,输出: 未捕获引用错误:未定义页面 第F页(:3:13) 在:1:1根据Mozilla,“let语句声明一个块作用域局部变量,可以选择将其初始化为一个值。”此外,“在程序和函数的顶层,let与var不同,不在全局对象上创建属性。” 看 了解更多信息 这意味着在您提供的代码中,您可以有效地创建一个隐式全局变量pages,因为let pages并不是真正的全局变量,而是限制在它所在的范围内。变量声明适用于整个范围,即使执行尚未到达它们。如您所见,它不会记录未定义的? let pages =100;

输出: 未捕获引用错误:未定义页面 第F页(:3:13) 在:1:1

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

看 了解更多信息


这意味着在您提供的代码中,您可以有效地创建一个隐式全局变量pages,因为let pages并不是真正的全局变量,而是限制在它所在的范围内。

变量声明适用于整个范围,即使执行尚未到达它们。如您所见,它不会记录
未定义的
let pages =100;
let pageFunction=()=>{
 console.log(pages);
 const pages = "20";
 //console.log(pages);
}
pageFunction();