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 相关文章推荐
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
酷炫jQuery全屏3D焦点图动画效果
Mar 22 Javascript
js无提示关闭浏览器窗口的两种方法分析
Nov 06 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
OpenLayers3实现测量功能
Sep 25 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 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 5.5版本的array_column()函数
2014/10/24 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
package.json文件配置详解
2017/06/15 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
营销与策划实训报告
2014/11/05 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
教师创先争优承诺书
2015/04/27 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers