这样理解这段Javascript 代码

一. 代码

  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

这三段代码都理解了。

你可能感兴趣的:(Javascript,javascript,前端,开发语言)