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无缝滚动代码
Jan 03 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
jquery实现标题字体变换的滑动门菜单效果
Sep 07 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
JS前端基于canvas给图片添加水印
Nov 11 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
node.js如何自定义实现一个EventEmitter
Jul 16 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
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Django的models模型的具体使用
2019/07/15 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
Python 多进程、多线程效率对比
2020/11/19 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
小学生美德少年事迹
2014/02/02 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
酒店管理求职信范文
2014/04/06 职场文书
主题团日活动总结
2014/06/25 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
结婚典礼主持词
2015/06/29 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python