[Intermediate Algorithm] - Arguments Optional

題目

建立一個計算兩個參數之和的 function。若是隻有一個參數,則返回一個 function,該 function 請求一個參數而後返回求和的結果。函數

例如,add(2, 3) 應該返回 5,而 add(2) 應該返回一個 function測試

調用這個有一個參數的返回的 function,返回求和的結果:code

var sumTwoAnd = add(2);ip

sumTwoAnd(3)返回 5get

若是兩個參數都不是有效的數字,則返回 undefined回調函數

提示

Closures
Arguments objectit

測試用例

  • add(2, 3) 應該返回 5
  • add(2)(3) 應該返回 5
  • add("http://bit.ly/IqT6zt") 應該返回 undefined
  • add(2, "3") 應該返回 undefined
  • add(2)([3]) 應該返回 undefined

分析思路

  1. 根據測試用例,須要先判斷參數類型是否正確,使用 typeof 進行判斷;
  2. 判斷參數個數,爲 1 則使用回調函數再傳入下一個參數;
  3. 兩個參數直接相加便可;

代碼

function add() {
  for (var i = 0; i < arguments.length; i++) {
    if (typeof arguments[i] !== "number") {
      return undefined;
    }
  }
    
  if (arguments.length == 1){
    x = arguments[0];
    return function(val){
      if(typeof val == "number")
        return val + x;
      else
        return undefined;
    };
  }
  else {
    return arguments[0] + arguments[1];
  }
}

add(2,3);
相關文章
相關標籤/搜索