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创建自定义对象 创建Object实例添加属性和方法
Jun 04 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
JS实现快递单打印功能【推荐】
Jun 21 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
js中!和!!的区别与用法
May 09 Javascript
vue点击按钮实现简单页面的切换
Sep 08 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
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
django框架模板语言使用方法详解
2019/07/18 Python
如何使用python操作vmware
2019/07/27 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
详解KMP算法以及python如何实现
2020/09/18 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
活动策划求职信模板
2014/04/21 职场文书
2015团员个人年度总结
2015/11/24 职场文书
2019教师的学习计划
2019/06/25 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
HTML基础详解(上)
2021/10/16 HTML / CSS
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
HttpClient实现表单提交上传文件
2022/08/14 Java/Android