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

问题描述 投票:-2回答:1

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

function doWork(){

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

  return fn();

}

console.log(doWork()); // 2
javascript scope let
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.