为什么吊装在变量和函数方面的作用不同



我最近读了一些文档,发现了一些与JavaScript中的提升相关的不一致模式。

如下所示:

在功能中,

function abc(){
console.log("worked")
}
abc();

输出:工作

此外,

abc();
function abc(){
console.log("worked")
}

输出:工作

这种情况是由于提升而发生的,因为在执行上下文中,内存最初是为abc保存的。

但在变量的情况下不会发生同样的情况,我想知道为什么

例如,

var a = "Hello"
console.log(a)

输出:你好

**那么,为什么下面给出的代码不一样呢?

console.log(a)
var a = "Hello"

上述代码表示">未定义">

当开始执行上述代码时:

  1. a设置为未定义
  2. 则未定义将重新分配给提供的值"Hello">

但事实并非如此,而是输出未定义的

为什么?

感谢您的阅读。如有任何帮助,我们将不胜感激。

代码

console.log(a)
var a = "Hello"

被解释为写入

var a;
console.log(a);
a = "Hello"

为什么?这就是指定语言工作的方式。在许多情况下,提升整个初始化表达式会产生问题。

最新更新