欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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))

相關(guān)文章

  • javascript閉包的高級使用方法實(shí)例

    javascript閉包的高級使用方法實(shí)例

    這篇文章介紹了javascript閉包的高級使用方法實(shí)例,有需要的朋友可以參考一下
    2013-07-07
  • JS查找數(shù)組中重復(fù)元素的方法詳解

    JS查找數(shù)組中重復(fù)元素的方法詳解

    這篇文章主要介紹了JS查找數(shù)組中重復(fù)元素的方法,結(jié)合具體實(shí)例形式對比分析了javascript針對數(shù)組的遍歷、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Bootstrap實(shí)現(xiàn)前端登錄頁面帶驗(yà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-03
  • js實(shí)現(xiàn)微信聊天界面

    js實(shí)現(xiàn)微信聊天界面

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)微信聊天界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • ES6 Map結(jié)構(gòu)的應(yīng)用實(shí)例分析

    ES6 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-06
  • 如何使用JS中的webWorker

    如何使用JS中的webWorker

    作為瀏覽器腳本語言,如果JavaScript不是單線程,那么就有點(diǎn)棘手了。比如,與用戶交互或者對DOM進(jìn)行操作時(shí),在一個(gè)線程上修改某個(gè)DOM,另外的線程刪除DOM,這時(shí)瀏覽器該如何抉擇呢?
    2021-05-05
  • javascript的tab切換原理與效果實(shí)現(xiàn)方法

    javascript的tab切換原理與效果實(shí)現(xiàn)方法

    這篇文章主要介紹了javascript的tab切換原理與效果實(shí)現(xiàn)方法,實(shí)例分析了簡單的tab切換實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 使用Javascript寫的2048小游戲

    使用Javascript寫的2048小游戲

    這篇文章主要介紹了使用Javascript寫的2048小游戲的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • 微信小程序?qū)崿F(xiàn)車牌鍵盤

    微信小程序?qū)崿F(xiàn)車牌鍵盤

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)車牌鍵盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • js取得當(dāng)前網(wǎng)址

    js取得當(dāng)前網(wǎng)址

    用js獲取當(dāng)前網(wǎng)頁的網(wǎng)址,平時(shí)一直用location.href;下一篇我會把document.url和location.href對比一下
    2008-05-05

最新評論