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解决数字不能换行问题
Aug 10 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
js动态设置div的值下例子
Oct 29 Javascript
简单实用的反馈表单无刷新提交带验证
Nov 15 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
vue-iview动态新增和删除的方法
Jun 17 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
ADODB的数据库封包程序库
2006/12/31 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
JS中Safari浏览器中的Date
2017/07/17 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python3+PyQt5实现柱状图
2018/04/24 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python的几种主动结束程序方式
2019/11/22 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
小学敬老月活动方案
2014/02/11 职场文书
宣传口号大全
2014/06/16 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
继承权公证书范本
2015/01/23 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
golang 在windows中设置环境变量的操作
2021/04/29 Golang
python脚本框架webpy模板控制结构
2021/11/20 Python