使用js內建物件arguments求函式的所有引數的和
阿新 • • 發佈:2019-01-31
今天做一個面試題時遇到一個問題,如下:
函式 useArguments 可以接收 1 個及以上的引數。請實現函式 useArguments,返回所有呼叫引數相加後的結果。本題的測試引數全部為 Number 型別,不需考慮引數轉換。
一開始我想?不會這麼簡單吧,就隨便做了個函式相加的方法提上去了,誰知道提示錯誤,然後又仔細的審了審題,發現題目第一句話的意思原來是我理解錯了,人家的意思是我不管輸入幾個引數都可以相加減,而不是直接寫死的就寫2個函式相加,也要三個相加,4個,5個。。。想通以後一時還真有點懵了,這是嘛意思。以前不都是傳幾個引數接幾個,如果不寫死引數漏掉了怎麼辦?後來在網上找了找才發現原來js函式有個內建物件arguments。
function useArguments() {
var sum=0;
for(var i in arguments){
alert(i);
sum = sum+arguments[i]
}
return sum;
}
console.log(useArguments(1,2,5))
如上,我命名的函式並沒有接引數,但只要在函式中用到arguments這個函式,遍歷出它就是呼叫時輸入的所有引數了。