1. 程式人生 > >編寫一個求和函式sum,使輸入sum(2)(3)或輸入sum(2,3),輸出結果都為5

編寫一個求和函式sum,使輸入sum(2)(3)或輸入sum(2,3),輸出結果都為5

昨天的筆試題,做的一塌糊塗,題目考的都很基礎而且很細,手寫程式碼對我來說是硬傷啊。其中有一道是這個,然而看到題目的時候,根本沒有想到arguments;然後現在就惡補一下。

arguments:用在函式內部,表示傳給該函式的所有的實參的集合。

雖然arguments物件並不是一個數組,但是訪問單個引數的方式與訪問陣列元素的方式相同。例如:arguments[0],arguments[1]...arguments[n].

function foo(){
				var sum = 0;
				console.log(arguments);//偽陣列或者類陣列物件
				//arguments[0]取到第一個實參值,arguments[arguments.length-1]取到最後一個實參值
				//console.log(arguments[0],arguments[1])
				//var sum = arguments[0]+arguments[1]+arguments[2]+arguments[3];
				
				for(var i = 0; i < arguments.length; i++){
					sum += arguments[i]
				}
				document.write(sum);
			}
			
			foo(1,2,3,4,5,55);

迴歸到本題,同一個函式,但是傳的實參個數不同,此時就要考慮arguments了,判斷實參個數,然後求和。

function sum(){
	var num = arguments[0];
	if(arguments.length == 1){
		return function(sec){
			console.log(num+sec);
		}
	}else{
		for(var i = 1; i < arguments.length; i++){
			num += arguments[i];
		}
		console.log(num);
	}
}
sum(2,3);            //5
sum(2)(3);           //5

這時就大功告成了