分析一段js代码

求解以下代码的输出值为什么是undefined?if语句又没有执行

var tmp = new Date();

function f() {
  console.log(tmp);
  if (false) {
    var tmp = 'hello world';
  }
}

f();
阅读 2.3k
4 个回答
var tmp
tmp = new Date();

function f() {
  var tmp;
  console.log(tmp);
  if (false) {
    tmp = 'hello world';
  }
}

f();

你把var改成let就会有输出了。。
其实就是变量声明提升的问题

js代码在执行之前会先解析 解析的时候就会变量提升 解析的时候不会关心代码会不会执行

新手上路,请多包涵

局部作用域覆盖了全局作用域的tmp,而且变量声明提升

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题