實現一個函數fn, 使fn(1)(2)的結果為兩個參數的和,剛開始沒反應過來,其實細細一想第二個括號就是函數再調用的問題,廢話不多說,代碼奉上:
var fn = function(n) { function f(m) { return n + m; } return f;//這必須返回的是整個函數,而不是函數的調用f(); }; var s = fn(1)(2); console.log(s); //或者 function fn(n) { function f(m) { return n + m; } return f; }; var s = fn(1)(2); console.log(s);
//如果是這樣就是調內部函數問題
var a = function(n) {
function f() {
return n + n;
}
return f();
};
var s = a(1);
console.log(s);
區別在於第一種為變量函數,調用必須在函數定義的后面;第二種fn()在函數的前后都可以調用。