【发布时间】:2021-10-12 10:22:23
【问题描述】:
我正在学习 Javascript,我进入了提升/范围部分。我有一些问题,我真的希望有人可以帮助我澄清,这是我的例子:
因此,由于提升,这些正常工作 - firstName 变量在全局范围内,或者可以在我们声明函数之前调用函数:
function test() {
console.log(firstName);
}
const firstName = 'a';
test();
或
const firstName ='a';
test();
function test (){
console.log(firstName)
}
但是,如果我交换 firstName 和 test() 的顺序,代码将不再工作:
function test() {
console.log(`${firstName}`)
};
test();
const firstName = 'a';
根据提升,我认为firstName变量在全局范围内。因此,测试函数在执行时应该能够查找变量 firstName。
但是为什么在上面的情况下,它不起作用?
我对提升/作用域的理解有什么问题吗?
【问题讨论】:
-
const(和let)被提升,但它们受到在初始化之前无法访问的临时死区的影响:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript scope