【发布时间】:2020-02-27 13:00:31
【问题描述】:
我最近一直在阅读一些文档,并遇到了一些与 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"
上面的代码声明“undefined”
当上述代码开始执行时:
- a 设置为未定义
- 然后将 undefined 重新分配给提供的值,即“Hello”
但事实并非如此,而是输出 undefined
这是为什么呢?
感谢您的阅读。 任何帮助将非常感激。
【问题讨论】:
-
请参阅accepted answer 了解此问题。这将向您解释函数行为的原因。
标签: javascript hoisting