gpt4 book ai didi

javascript - let 关键字的问题

转载 作者:数据小太阳 更新时间:2023-10-29 06:15:01 26 4
gpt4 key购买 nike

我在玩一些代码时遇到了一种情况,我无法确定为什么“让”以它的方式运行。

对于下面的代码块:

var x = 20; // global scope

function f() {
let x = x || 30;
}

f(); // VM3426:1 Uncaught ReferenceError: x is not defined(…)

我在执行 f() 时收到错误“x is not defined”。我确实理解“让”变量没有提升,但由于“x”具有全局副本,为什么函数“f”内的行不默认为全局副本而不是抛出错误?是否在函数开始时“让”将变量设置为未声明(而不是因为提升而使用 var 设置为“未定义”)?有没有办法在函数中获取“x”的全局副本?

最佳答案

异常(exception)是关于右侧 x - 当您初始化 block 作用域x 变量时,全局变量已经被“遗忘”然而新的仍然没有被声明并且不能在初始化期间使用

与显式调用全局的比较

    function f() {
let x = window.x || 30;
}

另请查看 this MDN article关于死区

关于javascript - let 关键字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com