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


Posted in Javascript onFebruary 26, 2010
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 相关文章推荐
js自定义事件及事件交互原理概述(二)
Feb 01 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
IE的事件传递-event.cancelBubble示例介绍
Jan 12 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
微信小程序网络封装(简单高效)
Aug 06 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
如何在JavaScript中谨慎使用代码注释
Jun 21 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
解决vant title-active-color与title-inactive-color不生效问题
Nov 03 Javascript
jquery1.4 教程二 ajax方法的改进
Feb 25 #Javascript
jquery 1.4.2发布!主要是性能与API
Feb 25 #Javascript
jQuery 方法大全方便学习参考
Feb 25 #Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 #Javascript
javascript 命名规则 变量命名规则
Feb 25 #Javascript
javascript for循环设法提高性能
Feb 24 #Javascript
判断控件是否已加载完成的代码
Feb 24 #Javascript
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
新浪的图片新闻效果
2007/01/13 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python2与Python3的区别点整理
2019/12/12 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
军训自我鉴定100字
2014/02/13 职场文书
法人代表授权委托书
2014/04/08 职场文书
倡议书格式模板
2014/05/13 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
十八大标语口号
2014/10/09 职场文书
员工工作能力评语
2014/12/31 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript