网络编程 
首页 > 网络编程 > 浏览文章

javascript function调用时的参数检测常用办法

(编辑:jimmy 日期: 2025/5/13 浏览:3 次 )
复制代码 代码如下:
var f1 = function(p1,p2,p3){
    switch(arguments.length){
        case 0:
            alert("无参版本的f1")
            break;
        case 1:
            alert("1个参数版本的f1:" + p1)
            break;
        case 2:
            alert("2个参数版本的f1:" + p1 + "," + p2)
            break;
        case 3:
            alert("3个参数版本的f1:" + p1 + "," + p2 + "," + p3)
            break;
        default:
            alert("不支持多于3个参数的调用!");
            break;
    }
}
f1();
f1("1");
f1("a",100);
f1("1","2","3");
f1("1","2","3","4")

2.参数个数检测
js引擎同样也不会在function调用时,强制检查参数个数,所以只能自己处理,示例代码:
复制代码 代码如下:
var fnMustOneParam = function(p){

    //检测有没有参数传入
    if (typeof p=="undefined"){
        alert("fnMustOneParam必须要有参数传入,才能调用(1)!");
        return ;
    }
    //也可以写成这样
    if (arguments.length==0){
        alert("fnMustOneParam必须要有参数传入,才能调用(2)!");
        return;
    }
    //检测参数个数
    if (arguments.length!=0){
        alert("fnMustOneParam只能传入一个参数调用!");
        return;
    }
    //to do...
}
//fnMustOneParam(1,3,4);

3.参数基本类型检测
js引擎同样更不会检测参数的类型,如果您希望对参数的基本类型做些限制,可以利用typeof 来判断基本类型
复制代码 代码如下:
var fnString = function(s){
    if (arguments.length!=1){
        alert("参数个数不匹配!");
        return ;
    }
    if (typeof s != "string"){
        alert("只能传入string类型的参数!");
        return ;
    }

}
//fnString(123);

4.自定义类的参数类型检测
第3条所提到的方法,只能检测参数的基本类型,如果是自定义类的参数,如果用typeof运算符号,只能得到object的类型检测结果,这时可利用instanceof运算符号来解决
复制代码 代码如下:
function Person(name,age){
    this.name = name;
    this.age = age;
}
function fnPerson(p){
    if (arguments.length=1 && p instanceof Person){
        alert("fnPerson调用成功,p.name=" + p.name + ",p.age=" + p.age);
    }
    else{                    
        alert("必须传入一个Person类型的参数才能调用!");
    }
}
fnPerson("asdf");
fnPerson(new Person('菩提树下的杨过',30))
上一篇:JavaScript 时分秒时间代码(自动补零)
下一篇:jquery1.4 教程三 新增方法教程
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap