【问题标题】:Newbie Questions on Scoping and Hoisting? [duplicate]关于范围界定和提升的新手问题? [复制]
【发布时间】: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。

但是为什么在上面的情况下,它不起作用?

我对提升/作用域的理解有什么问题吗?

【问题讨论】:

标签: javascript scope


【解决方案1】:

用 let 和 const 声明的变量也会被提升,但不像 for var 变量未使用默认值初始化 不明确的。直到它们被初始化的那一行被执行, 任何访问这些变量的代码都会抛出异常。

MDN DOCS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2012-10-17
    • 2013-01-29
    • 2023-04-03
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多