
函数迭代可选参数算法挑战
方法一:
function add() {
var arr=[].concat(...arguments);
if( arr.some(function(ele){
return typeof ele!="number";
}) ){ //参数出现非数字类型,返回undefined
return undefined;
}
if( arr.length==2 ){
return arr[0]+arr[1];
}
return function(a){
if( typeof a != "number" ){ //同上
return undefined;
}
return a+arr[0];
};
}
add(2)(3);
方法二:
function add() {
if(arguments.length===0){
return undefined;
} else if(arguments.length===1){
if(typeof arguments[0] !== 'number'){
return undefined;
} else{
var a = arguments[0];
return function(b){
if(typeof b === 'number'){
return a+b;
}else{
return undefined;
}
};
}
} else if(arguments.length===2){
var x = arguments[0],
y = arguments[1];
if(typeof x !== 'number' || typeof y !== 'number'){
return undefined;
} else{
return x + y;
}
}
return undefined;
}
add(2,3);