日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【实例讲解】JS中形参、实参可以不一致

發布時間:2025/1/21 javascript 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【实例讲解】JS中形参、实参可以不一致 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

function myFunction() { var x=5; return x; } 補充:JS中帶返回值的函數,在函數定義時不體現


//正文

1.實參與形參個數可以有偏差,不會因為參數不統一而錯誤。

例1:

?
1 2 3 4 5 6 functionbox(a,b){??????????????????????? ????return a + b; ?} ?alert(box(1,3,5));??????? //運行結果:“4”。 ???????????????????????????//進行的運算為“1+3”,沒有用到“5”。

例2:

?
1 2 3 4 5 functionbox(a,b,c){ ????return a + b+c; ?} ?alert(box(1,'5'));???????? //運行結果:15undefined。 ????????????????????????????//結果為sring類型。進行的運算1與‘5’的字符連接,再與一個不存在(undefined)的字符連接,結果即為15undefined。

2.JS函數不能重載。

因為“函數重載”靠的就是相同函數名根據參數的不同,匹配特定函數,從而執行函數的過程;而JS函數不再排斥“異形”函數,缺失了辨別相同函數名的不同函數的過程,相同函數名的情況下,JS調用時,只會執行最后一個所調函數。

例3:

?
1 2 3 4 5 6 7 8 9 10 function box(a,b,c){ ????alert('執行了第一個函數,' + a +'+' + c + '='+(a+c)); ?} function box(a,b,c){ ????alert('執行了第二個函數,'+ a + '+' + b + '='+(a+b)); ?}??????????????? alert(box(1,'5',3));??? //執行結果為:執行了第二個函數,1+5=15 ????????????????????????//類型為string.???????????????

例4:

?
1 2 3 4 5 6 7 8 9 10 function box(a,b,c){ ????alert('執行了第二個函數,'+ a + '+' + b + '='+(a+b)); ?} function box(a,b,c){ ????alert('執行了第一個函數,' + a +'+' + c + '='+ (a+c)); ?}?????????????? alert(box(1,'5',3));??? //執行結果為:執行了第一個函數,1+3=4 ????????????????????????//類型為number.

3.函數運用arguments對象,很有特點

arguments對象的使用,很好地解釋了支持形參、實參不一致而不出錯的原理性問題。

3.1 arguments[index]指定參數值,index為參數的索引

例5:

?
1 2 3 4 5 6 7 function box(){ ????return arguments[0]+arguments[5]; } alert(box(1,2,3,4,5,6));?????????????????????? //執行結果為:7 alert(box('Test','UseCase',3,4,5,6));????????? //執行結果為:Test6 ???????????????????????????????????????????????//arguments[0]表示第一個參數,arguments[5]表示第六個參數;上面兩個執行結果,都反映了,box()函數只用了所需的指定參數,其他參數都被忽略了。

3.2 arguments.length得到參數的個數

例6:

?
1 2 3 4 5 6 7 function box(){ ????return arguments.length; } alert(box(1,2,3,4,5,6));????????????????????? //執行結果為:6 alert(box('Test','UseCase',3,4,5,6));???????? //執行結果為:6 ??????????????????????????????????????????????//當需要知道某序列有多少元素時,將其傳入該函數,即可知道

3.3 arguments.length的擴展運用

例7:

?
1 2 3 function box(){ ????var sum = 0; ????for (var i=0;i</arguments.length;i++){>

4.一個顯而易見的錯誤(只為下面說明問題)

看了例7,可能會有點迷糊,因而添加例8、例9,都說明了一個問題,參數為函數體提供必要信息,用于可控地實現功能。函數(function:功能)

例8:

?
1 2 3 4 5 6 7 function box(a,b){ ????return a+b+c; } alert(box(1,2,3));?????????????????????????????????????? //ReferenceError:c is not defined alert(box(1,2));???????????????????????????????????????? //ReferenceError:c is not defined ?????????????????????????????????????????????????????????//字面量c未定義

例9:

?
1 2 3 4 5 6 function box(){ ????return a+b+c; }?????????????????????????? alert(box(1,2,3));?????????????????????????????????????? //ReferenceError:a is not defined ?????????????????????????????????????????????????????????//字面量a未定義

簡單比較例2、例4、例8,可以得出這樣的結論,JS中的函數體與形參、實參以及形參與實參的關系是:

遵循一個原則:函數實現功能

函數體與形參關系:形參必須滿足函數體的必要需求,否則沒法進行,即使用了形參未定義的‘字面量’,出錯:c is not defined 。

形參與實參關系:實參在形參的標尺下,多出的被攔截而被忽略,缺少的被判斷為undefined(不存在),但都不報錯。

智能:是說JS函數對多出的實參去粗取精,對少的實參做了適當的處理,沒有雷厲加之,使得函數運行更大限度地平穩協調。

總結

以上是生活随笔為你收集整理的【实例讲解】JS中形参、实参可以不一致的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。