codecamp

函数迭代可选参数算法挑战

方法一:

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);

数组元素判断算法挑战
高级脚本算法答案说明
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

HTML5&CSS

JavaScript

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }