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
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
jQuery动态设置form表单的enctype值(实现代码)
Jul 04 Javascript
jquery制作居中遮罩层效果分享
Feb 21 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
ES6中的箭头函数实例详解
Apr 06 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
使用Vue组件实现一个简单弹窗效果
Apr 23 Javascript
bootstrap table表格插件之服务器端分页实例代码
Sep 12 Javascript
js面向对象编程OOP及函数式编程FP区别
Jul 07 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 函数执行效率的小比较
2010/10/17 PHP
php中error与exception的区别及应用
2014/07/28 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
Python subprocess模块学习总结
2014/03/13 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python访问纯真IP数据库脚本分享
2015/06/29 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
浅析Python 多行匹配模式
2020/07/24 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
学校卫生检查制度
2014/02/03 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
环保志愿者活动总结
2014/06/27 职场文书
承租经营合作者协议书
2014/10/01 职场文书
学校体育节班级口号
2015/12/25 职场文书
2016关于军训的心得体会
2016/01/11 职场文书