我最近读了一些文档,发现了一些与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"
上述代码表示">未定义">
当开始执行上述代码时:
- a设置为未定义
- 则未定义将重新分配给提供的值"Hello">
但事实并非如此,而是输出未定义的
为什么?
感谢您的阅读。如有任何帮助,我们将不胜感激。
代码
console.log(a)
var a = "Hello"
被解释为写入
var a;
console.log(a);
a = "Hello"
为什么?这就是指定语言工作的方式。在许多情况下,提升整个初始化表达式会产生问题。