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 相关文章推荐
JavaScript prototype属性深入介绍
Nov 27 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
Node.js服务器开启Gzip压缩教程
Aug 11 Javascript
JavaScript从原型到原型链深入理解
Jun 03 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
两个php日期控制类实例
2014/12/09 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
对python生成业务报表的实例详解
2019/02/03 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python能否java成为主流语言吗
2020/06/22 Python
Python里面search()和match()的区别
2016/09/21 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
介绍信怎么写
2015/01/30 职场文书
单位车辆管理制度
2015/08/05 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
Python制作表白爱心合集
2022/01/22 Python