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 contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
jQuery Animation实现CSS3动画示例介绍
Aug 14 Javascript
JS字符串截取函数实例
Dec 27 Javascript
javascript函数声明和函数表达式区别分析
Dec 02 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
快速处理vue渲染前的显示问题
Mar 05 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生成便于打印的网页
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
JavaScript实现打字效果的方法
2015/07/10 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python读写Excel文件方法介绍
2014/11/22 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python3.x上post发送json数据
2018/03/04 Python
numpy返回array中元素的index方法
2018/06/27 Python
详解Python学习之安装pandas
2019/04/16 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
土木工程专业个人求职信
2013/12/05 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
生产厂长岗位职责
2014/02/21 职场文书
统计系教授推荐信
2014/02/28 职场文书
保健品市场营销方案
2014/03/31 职场文书
英语教师自荐信
2014/05/26 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
实习科室评语
2015/01/04 职场文书