一. 代码
var tmp = new Date()
function f() {
console.log(tmp)
if (false) {
var tmp = 'hello world'
}
}
f();
运行结果是:undefined
其实它和下面这段代码运行结果是一样的。
var tmp = new Date()
function f() {
console.log(tmp)
var tmp = 'hello world'
}
f();
为什么会这样,我们看下面段代码,结果也是undefined。
console.log(num)
var num = 1
因为什么呢,因为var声明变量存在变量提升,变量提升是指在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分提升到代码开头的行为。变量被提升后,会给变量设置默认值为 undefined。
上面代码相当于
var num
console.log(num)
num = 1
这三段代码都理解了。