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基础知识filter()和find()实例说明
Jul 06 Javascript
用jquery实现下拉菜单效果的代码
Jul 25 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
浅谈JS原型对象和原型链
Mar 02 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
vuex中使用对象展开运算符的示例
Sep 25 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 Javascript
npm全局环境变量配置详解
Dec 15 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/02/21 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php 实现进制相互转换
2016/04/07 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
python获取mp3文件信息的方法
2015/06/15 Python
Python字符串处理实例详解
2017/05/18 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python语言元素知识点详解
2019/05/15 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
iostream与iostream.h的区别
2015/01/16 面试题
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python