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 相关文章推荐
基于jquery的Repeater实现代码
Jul 17 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
AngularJs Scope详解及示例代码
Sep 01 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 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
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
浅谈php的优缺点
2015/07/14 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
Python全局变量操作详解
2015/04/14 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
python numpy元素的区间查找方法
2018/11/14 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python标识符命名规范原理解析
2020/01/10 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
求职自荐书范文
2013/12/04 职场文书
捐资助学倡议书
2014/04/15 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
保护校园环境倡议书
2015/04/28 职场文书
退休欢送会主持词
2015/07/01 职场文书
投诉书范文
2015/07/02 职场文书