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 相关文章推荐
页面中body onload 和 window.onload 冲突的问题的解决
Jul 01 Javascript
JQuery 选项卡效果(JS与HTML的分离)
Apr 01 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
Nov 23 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
May 30 Javascript
JavaScript中使用Async实现异步控制
Aug 15 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
Sep 04 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
js中Object.defineProperty()方法的不详解
Jul 09 Javascript
实例讲解React 组件生命周期
Jul 08 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
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
PHP调用其他文件中的类
2018/04/02 PHP
jQuery1.6 使用方法二
2011/11/23 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
python模块smtplib学习
2018/05/22 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
高职教师岗位职责
2013/12/24 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
捐款倡议书
2014/04/14 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年科协工作总结
2014/12/09 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书