function sum(a){ return function(b){ return a + b; } } console.log(sum(1)(2)); console.log(sum(5)(-1)); function byField(Field){ return (a,b) => a[Field] > b[Field]? 1: -1; } function makeArmy() { let shooters = []; let i = 0; while (i < 10) { let id = i; let shooter = function() { // 创建一个 shooter 函数, console.log( id ); // 应该显示其编号 }; shooters.push(shooter); // 将此 shooter 函数添加到数组中 i++; } // ……返回 shooters 数组 return shooters; } let army = makeArmy(); // ……所有的 shooter 显示的都是 10,而不是它们的编号 0, 1, 2, 3... army[0](); // 编号为 0 的 shooter 显示的是 10 army[1](); // 编号为 1 的 shooter 显示的是 10 army[2](); // 10,其他的也是这样。