javascript function調(diào)用時(shí)的參數(shù)檢測(cè)常用辦法
更新時(shí)間:2010年02月26日 13:29:43 作者:
js中并不直接支持類似c#的方法重載,所以只能變相的來解決,示意代碼:(利用了內(nèi)置屬性arguments)
復(fù)制代碼 代碼如下:
var f1 = function(p1,p2,p3){
switch(arguments.length){
case 0:
alert("無參版本的f1")
break;
case 1:
alert("1個(gè)參數(shù)版本的f1:" + p1)
break;
case 2:
alert("2個(gè)參數(shù)版本的f1:" + p1 + "," + p2)
break;
case 3:
alert("3個(gè)參數(shù)版本的f1:" + p1 + "," + p2 + "," + p3)
break;
default:
alert("不支持多于3個(gè)參數(shù)的調(diào)用!");
break;
}
}
f1();
f1("1");
f1("a",100);
f1("1","2","3");
f1("1","2","3","4")
2.參數(shù)個(gè)數(shù)檢測(cè)
js引擎同樣也不會(huì)在function調(diào)用時(shí),強(qiáng)制檢查參數(shù)個(gè)數(shù),所以只能自己處理,示例代碼:
復(fù)制代碼 代碼如下:
var fnMustOneParam = function(p){
//檢測(cè)有沒有參數(shù)傳入
if (typeof p=="undefined"){
alert("fnMustOneParam必須要有參數(shù)傳入,才能調(diào)用(1)!");
return ;
}
//也可以寫成這樣
if (arguments.length==0){
alert("fnMustOneParam必須要有參數(shù)傳入,才能調(diào)用(2)!");
return;
}
//檢測(cè)參數(shù)個(gè)數(shù)
if (arguments.length!=0){
alert("fnMustOneParam只能傳入一個(gè)參數(shù)調(diào)用!");
return;
}
//to do...
}
//fnMustOneParam(1,3,4);
3.參數(shù)基本類型檢測(cè)
js引擎同樣更不會(huì)檢測(cè)參數(shù)的類型,如果您希望對(duì)參數(shù)的基本類型做些限制,可以利用typeof 來判斷基本類型
復(fù)制代碼 代碼如下:
var fnString = function(s){
if (arguments.length!=1){
alert("參數(shù)個(gè)數(shù)不匹配!");
return ;
}
if (typeof s != "string"){
alert("只能傳入string類型的參數(shù)!");
return ;
}
}
//fnString(123);
4.自定義類的參數(shù)類型檢測(cè)
第3條所提到的方法,只能檢測(cè)參數(shù)的基本類型,如果是自定義類的參數(shù),如果用typeof運(yùn)算符號(hào),只能得到object的類型檢測(cè)結(jié)果,這時(shí)可利用instanceof運(yùn)算符號(hào)來解決
復(fù)制代碼 代碼如下:
function Person(name,age){
this.name = name;
this.age = age;
}
function fnPerson(p){
if (arguments.length=1 && p instanceof Person){
alert("fnPerson調(diào)用成功,p.name=" + p.name + ",p.age=" + p.age);
}
else{
alert("必須傳入一個(gè)Person類型的參數(shù)才能調(diào)用!");
}
}
fnPerson("asdf");
fnPerson(new Person('菩提樹下的楊過',30))
您可能感興趣的文章:
- 小議Function.apply()之二------利用Apply的參數(shù)數(shù)組化來提高 JavaScript程序性能
- 弄了個(gè)檢測(cè)傳輸?shù)膮?shù)是否為數(shù)字的Function
- 無效的過程調(diào)用或參數(shù): Mid /inc-freehost-function/FreeHostFunction.asp 錯(cuò)誤的原因
- 帶參數(shù)的function 的自運(yùn)行效果代碼
- js設(shè)置function參數(shù)默認(rèn)值(適合沒有傳參情況)
- Lua中的函數(shù)(function)、可變參數(shù)、局部函數(shù)、尾遞歸優(yōu)化等實(shí)例講解
- JavaScript獲取function所有參數(shù)名的方法
相關(guān)文章
處理JavaScript值為undefined的7個(gè)小技巧
這篇文章主要介紹了處理JavaScript值為undefined的7個(gè)小技巧,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
boostrapTable的refresh和refreshOptions區(qū)別淺析
在使用bootstrapTable時(shí),刷新數(shù)據(jù)有兩個(gè)方法refresh、refreshOptions,在其用法上有點(diǎn)區(qū)別,接下來通過本文給大家分享boostrapTable的refresh和refreshOptions的區(qū)別,需要的朋友可以參考下2017-01-01
pc加載更多功能和移動(dòng)端下拉刷新加載數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了pc加載更多功能和移動(dòng)端下拉刷新加載數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
在javascript中執(zhí)行任意html代碼的方法示例解讀
關(guān)于javascript的eval()函數(shù)無法執(zhí)行html代碼的問題,下面為大家介紹下一種在javascript中執(zhí)行任意html代碼的方法,感興趣的朋友不要錯(cuò)過2013-12-12
原生JavaScript實(shí)現(xiàn)精美的淘寶輪播圖效果示例【附demo源碼下載】
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)精美的淘寶輪播圖效果,結(jié)合完整實(shí)例形式詳細(xì)分析了javascript實(shí)現(xiàn)淘寶輪播圖功能的相關(guān)HTML布局、css及js核心功能代碼,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-05-05

