实现一个函数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()在函数的前后都可以调用。