JS函數arguments數組獲得實際傳參數個數


JS與PHP在函數傳參方面有點不同,PHP形參與實參個數要匹配,而JS就靈活多了,可以隨意傳參,實參比形參少或多都不會報錯。

實參比形參多不會報錯

?
1
2
3
4
5
function say(a){
   alert(a);
}
 
say( '瓊台博客' , 'WEB技術博客' );

執行結果

瓊台博客

我們再來看看形參比實參多的結果

?
1
2
3
4
5
function say(a,b){
   alert( 'a 的值是 ' +a+ '\nb 的值是 ' +b);
}
 
say( '瓊台博客' );

執行結果

JS中arguments數組

a 對應第一個實參“瓊台博客”,b 沒有對應的實參所以值為undefined

arguments對象

其實有時候我們在程序設計比較復雜的時候並不指定參數個數,都是靈活運用。在函數里有一個數組arguments就是專門存儲實參數組的,通過arguments我們就可以知道實參個數以及值。

?
1
2
3
4
5
6
7
8
function arg(){
    var str = '總共傳了' +arguments.length+ '個參數\n' ;
    for ( var i=0;i<arguments.length;i++){   
        str += '第' +(i+1)+ '個參數值:' +arguments[i]+ '\n' ;
    }
    alert(str);
}
arg( '瓊台博客' , 'PHP博客' , 'WEB技術博客' );

執行結果

JS

在以上例子中,我們定義函數arg並沒有給它指定形參,而是使用arguments對象接收實參,非常靈活。

比如我們可以利用它來計算出一組數字里最小的數字,不管這組數字有多少個。如以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
function arg(){
    var tmp = 0, str = '在 ' ;
    for ( var i=0;i<arguments.length;i++){   
        for ( var g=0;g<arguments.length;g++){
            if (arguments[g]<arguments[i]){
               tmp = arguments[g];
            }
        }
       str += arguments[i]+ ',' ;
    }
    alert(str.substr(0,str.length-1)+ ' 里最小的值是 ' +tmp);
}
arg(200,100,59,3500);

執行 200,100,59,3500  四個數對比結果

JS中arguments對象

我們在加入兩個數,分別是 5 和 60

?
1
2
3
4
5
6
7
8
9
10
11
12
13
function arg(){
    var tmp = 0, str = '在 ' ;
    for ( var i=0;i<arguments.length;i++){   
        for ( var g=0;g<arguments.length;g++){
            if (arguments[g]<arguments[i]){
               tmp = arguments[g];
            }
        }
       str += arguments[i]+ ',' ;
    }
    alert(str.substr(0,str.length-1)+ ' 里最小的值是 ' +tmp);
}
arg(200,100,59,3500,5,60);

執行 200,100,59,3500,5,60 六個數對比結果

JS中arguments對象

根據兩次運算結果,我們發現無論我們傳進多少個數字,都能正確比對結果。arguments一般用在實參個數不定的地方,比如上邊的例子,你可以傳5個數進去比較,也可以傳100個數進去比較都可以。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM