每日一题- javascript-函数变量声明提升

100 阅读1分钟
// 看代码输出
function outer() {
  console.log(a);
  var a = 1;
  console.log(inner());
  function inner() {
    return a;
  }
}

输出:undefined 1

上述代码,函数、变量声明都被提升函数优先级更高,相当于执行下面的代码:

function outer() {
  function inner() {
    return a;
  }
  var a;
  console.log(a);
  a = 1;
  console.log(inner());
}

声明变量未赋值,会被赋予undefined,闭包的作用域包括父函数,父函数内声明了变量a,所以读取父函数内部的