- arguments能讀能改,爲實參的集合。
fn1(1,2,3); function fn1(){ //形參可不寫 alert(arguments[arguments.length-1]); //3 }
上面代碼中的arguments可能有點像數組,但是他並不是數組,卻可以使用數組中的某些方法。alert(sum(1,2,3)); //6 alert(sum(1,2,3,4)); //10 function sum(){ //當參數的個數不 確定的時候sum裏的形參不用再寫 var n =0; for(var i =0;i<arguments.length;i++){ n+=arguments[i]; } return n; }
- 下面是一個小例子,參數的最後一位是‘+’或‘-’,然後算出結果。
alert(sum(1,2,3,'+')); //6 alert(sum(10,2,3,60,'-')); //-55 function sum(){ var n =0; if(arguments[arguments.length-1] = = = '+'){ for(var i =0;i<arguments.length-1;i++){ n+=arguments[i];} return n;} else{ for(var i =1,n=arguments[0];i<arguments.length-1;i++){ n-=arguments[i]} return n;} }
- 下面代碼中,參數a、arguments[0]、和局部變量a是一種東西。
var a=1; function fn2(a){ arguments[0] = 3; alert(a); //3 var a= 2; alert(a); //2 } fn2(a); alert(a); //1
首先,js開始預解析: a = undefind fn1 = function(){......} 然後開始逐行解讀代碼: a =1; fn1函數開始進行預解析: a =undefind 然後開始逐行解讀函數代碼: 參數a = 1 參數a == >arguments[0] = 3; alert(a) //3 arguments[0] == >局部變量a = 2; alert(a) //2 alert(a) //1
arguments實參集合&參數&局部變量的關係
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.