我們一般稱使用arguments為可變參或不定參,采用arguments的函數其參數個數是可變的。
arguments本質是一個數組,數組內存儲的內容就是我們傳入的的參數
舉個例子:
//寫一個累加求和的函數 function sum(){ var result=0; for(var i=0;i<arguments.length;i++){ result+=arguments[i]; } return result; } console.log(sum(2,3,4));//9 console.log(sum(1,10,100,1000));//1111
接下來,我們再看一個css函數的例子。
假設,它的形式為:css(oDiv,樣式),其作用為獲取樣式值。
它的形式為:css(oDiv,樣式,樣式值)其作用為設置樣式。
參數個數不同,實現的功能不同,那么我們可以利用arguments的長度來判斷其功能。
function css(){ if(arguments.length==2){// 獲取樣式值 return arguments[0].style[arguments[1]]; }else if(arguments.length==3){//設置樣式值 arguments[0].style[arguments[1]]=arguments[2]; } }
但是這樣的可讀性又很差,實際上,我們依舊可以對不定參函數的參數進行命名,從而提高代碼可讀性:
function css(obj,name,value){ if(arguments.length==2){ return obj.style[name]; }else if(arguments.length==3){ obj.style[name]=value; } }
