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(
'瓊台博客'
);
|
執行結果
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技術博客'
);
|
執行結果
在以上例子中,我們定義函數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 四個數對比結果
我們在加入兩個數,分別是 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 六個數對比結果
根據兩次運算結果,我們發現無論我們傳進多少個數字,都能正確比對結果。arguments一般用在實參個數不定的地方,比如上邊的例子,你可以傳5個數進去比較,也可以傳100個數進去比較都可以。