题目:(重点考察闭包概念)
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3)
应该返回 5
,而 add(2)
应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3)
//返回 5
。
如果两个参数都不是有效的数字,则返回 undefined。
代码:
1 function add() { 2 //如果只传入一个参数,且为有效数字,返回函数 3 if(arguments.length == 1 && typeof arguments[0] == 'number'){ 4 var val = arguments[0]; 5 return function(x) { 6 if(typeof x == 'number') return x + val; 7 }; 8 } 9 //如果只传入两个参数,且为有效数字,返回两数之和 10 else if(typeof arguments[0] == 'number' && typeof arguments[1] == 'number'){ 11 return arguments[0]+arguments[1]; 12 } 13 //如果只传入参数不是有效数字,返回undefined 14 else{ 15 return undefined; 16 } 17 }