JavaScript,在 'var' 和没有 'var' 之间提升

标签 javascript hoisting

<分区>

我理解以下函数,因为发生了变量提升。 foo();

function foo() {
    console.log( a ); // undefined
    var a = 2;
}

但是我不明白的是以下部分。 我收到引用错误,为什么?

foo()
function foo() {
    console.log( a ); // Reference Error
    a = 2;
}

--- 编辑---
到目前为止,我从答案中了解到第二个没有进行任何提升,我们不能使用任何 undefined variable 。

foo()
function foo() {
    //  we cannot use any undefined variable, which "a" here 
    console.log( a ); 
    window.a = 2;
}

例如

var a;
a; //undefined
b; //Reference error

最佳答案

在第一个中,声明了 a,但 undefined,在第二个中,它也是 undeclared(无法在foo 或在全局范围内),因此抛出 ReferenceError。

关于JavaScript,在 'var' 和没有 'var' 之间提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34057393/

相关文章:

javascript - Canvas 中的 SVG feComposite 过滤器实现

javascript - 在另一个特定的脚本标签之前插入一个脚本标签

javascript - 函数声明和变量声明的顶部是否有助于提高性能?

Javascript - 提升优先级

javascript - React-Redux,类型错误 : addItem is not a function

javascript - 仅为附加文本设置字体大小

javascript - 如何在 Rails 中通过 JS 动态添加新的嵌套字段以形成表单?

javascript - 编程语言中变量提升的优点和缺点是什么?

javaScript 提升无法正常工作

javascript - 在初始化之前使用变量。 JS