javascript中的词法范围

joh*_*sel 1 javascript

我正在读这本书:http://eloquentjavascript.net/我觉得很棒.

但是我很难理解下面的函数,函数add(number)从哪里得到它的参数?

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

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

我认为答案是7 show(addTwo(1) + addFive(1));

makeAddFunction(2),数量是2,但数量是多少?数字+ 2 ......

注意:show函数在php中几乎是回声.

JAA*_*lde 5

makeAddFunction返回一个新函数.新函数接受一个参数,number并将其添加到最初给出的任何内容中makeAddFunction.

var addTwo = makeAddFunction(2);
// addTwo is now a function which you can call with a numeric argument ('number')
// anything you pass to it will have two added to it

var five = addTwo( 3 );  // add two to three (makes five)
Run Code Online (Sandbox Code Playgroud)