1. 程式人生 > >使用js內建物件arguments求函式的所有引數的和

使用js內建物件arguments求函式的所有引數的和

今天做一個面試題時遇到一個問題,如下:

函式 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這個函式,遍歷出它就是呼叫時輸入的所有引數了。