javascript function調(diào)用時(shí)的參數(shù)檢測常用辦法
更新時(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ù)檢測
js引擎同樣也不會在function調(diào)用時(shí),強(qiáng)制檢查參數(shù)個(gè)數(shù),所以只能自己處理,示例代碼:
復(fù)制代碼 代碼如下:
var fnMustOneParam = function(p){
//檢測有沒有參數(shù)傳入
if (typeof p=="undefined"){
alert("fnMustOneParam必須要有參數(shù)傳入,才能調(diào)用(1)!");
return ;
}
//也可以寫成這樣
if (arguments.length==0){
alert("fnMustOneParam必須要有參數(shù)傳入,才能調(diào)用(2)!");
return;
}
//檢測參數(shù)個(gè)數(shù)
if (arguments.length!=0){
alert("fnMustOneParam只能傳入一個(gè)參數(shù)調(diào)用!");
return;
}
//to do...
}
//fnMustOneParam(1,3,4);
3.參數(shù)基本類型檢測
js引擎同樣更不會檢測參數(shù)的類型,如果您希望對參數(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ù)類型檢測
第3條所提到的方法,只能檢測參數(shù)的基本類型,如果是自定義類的參數(shù),如果用typeof運(yùn)算符號,只能得到object的類型檢測結(jié)果,這時(shí)可利用instanceof運(yùn)算符號來解決
復(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è)檢測傳輸?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)文章
Bootstrap實(shí)現(xiàn)前端登錄頁面帶驗(yàn)證碼功能完整示例
這篇文章主要介紹了Bootstrap實(shí)現(xiàn)前端登錄頁面帶驗(yàn)證碼功能,結(jié)合完整實(shí)例形式分析了Bootstrap前端登錄頁面帶驗(yàn)證碼界面布局與功能實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2020-03-03ES6 Map結(jié)構(gòu)的應(yīng)用實(shí)例分析
這篇文章主要介紹了ES6 Map結(jié)構(gòu)的應(yīng)用,結(jié)合實(shí)例形式分析了ES6中map鍵值對hash結(jié)構(gòu)相關(guān)定義、獲取、輸出、遍歷等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06javascript的tab切換原理與效果實(shí)現(xiàn)方法
這篇文章主要介紹了javascript的tab切換原理與效果實(shí)現(xiàn)方法,實(shí)例分析了簡單的tab切換實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-01-01