Javascript允许提升到范围或创建它的位置?

时间:2017-12-19 19:52:53

标签: javascript scope let

x在fn函数之后声明但返回其值。 为什么fn没有返回undefined?

function doWork(){

  let fn = function(){ return x; }
  let x = 2;

  return fn();

}

console.log(doWork()); // 2

1 个答案:

答案 0 :(得分:1)

doWork()函数内部,首先设置一个函数并将其指定给fn - 此函数尚未 。然后,您将x定义为2 此定义后,您可以通过调用fn()来调用return fn()

由于JavaScript从上到下工作,因此在您引用x时定义fn(),因此fn()能够正确return x

这可以在以下内容中看到:



function doWork() {
  let fn = function() {
    return x;
  }
  let x = 2;
  return fn();
}

console.log(doWork()); // 2