Javascript词法范围

mjm*_*che 4 javascript

有人可以用简单的语言解释这个代码如何工作以得到9的结果?

内部函数的返回会发生什么?我m assuming that the enclosing function return is assigned to the variables addTwo and addFive... where does the inner function get its argument (number)? I完全迷失了这个,教程没有解释它.

function makeAddFunction(amount) {
  function add(number) {
    return number + amount;
  }
  return add;
}

var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));
Run Code Online (Sandbox Code Playgroud)

med*_*iev 7

var addTwo = makeAddFunction(2);
Run Code Online (Sandbox Code Playgroud)

1.2被赋值为amount并绑定在函数范围内.内部add函数可以访问它,因此保持"缓存".

所以返回的内容基本上就是 function(number) { number + 2 };


var addFive = makeAddFunction(5);
Run Code Online (Sandbox Code Playgroud)

2.5以相同的方式分配,并function(number) { number + 5 };返回.

show(addTwo(1) + addFive(1));
Run Code Online (Sandbox Code Playgroud)

3. function( number ) {number+2}被调用并被1送入函数,因此2+1被返回3.

4. function( number ){number+5}被调用并被5送入函数,因此5+1被返回6.

5. 63添加,所以我们得到9.

6.9被送到这个show功能.