我最近一直在阅读一些文档,并遇到了一些与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"
上面的代码指出“ 未定义”
以上代码开始执行时:
但这不是事实,而是输出未定义
那是为什么?
感谢您的阅读。 任何帮助将非常感激。
答案 0 :(得分:2)
代码
console.log(a)
var a = "Hello"
被解释为好像是写的
var a;
console.log(a);
a = "Hello"
为什么?这就是指定语言工作的方式。提升整个初始化表达式会在很多情况下造成问题。