嵌套范围内的 JavaScript 变量在范围外不会出错

标签 javascript

我猜不出为什么会在下面的代码中发生这种情况:

(function(){
    console.log(`v1: `,v1); // show "undefined"
    console.log(`v2: `,v2); // show "Uncaught ReferenceError: v2 is not defined"

    if (true) {
        var v1 = 'something';
    }
})();

为什么 v1 显示 undefined?在必须喜欢 v2 的情况下,因为 v1 定义在 if block 中。

最佳答案

这是因为 Hoisting . v1 的声明先发生,然后是赋值。

您的代码实际解释为:

(function(){
    var v1;
    console.log(`v1: `,v1); // show "undefined"
    console.log(`v2: `,v2); // show "Uncaught ReferenceError: v2 is not defined"

    if (true) {
        v1 = 'something';
    }
})();

关于嵌套范围内的 JavaScript 变量在范围外不会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50226203/

相关文章:

javascript - 具有提升状态和受控依赖的 React 表单提交逻辑

javascript - 为什么当我点击按钮时我的标题没有改变?

javascript - IE : Placeholder of input field affect the width of select box

javascript - 如果已经存储了这样的唯一值,如何重新尝试插入数据库

javascript - 功能仅适用于第一个 td,但不适用于所有 td?

javascript - 我的 javascript Canvas map 脚本和性能不佳

javascript - 按下图像后在网站上重新加载 Javascript(函数)

javascript - 在 react 文件上传中无法正常工作

javascript - 使用jquery动态构建网格

javascript - 使用点击事件如何更改图像?