首页 > web前端 > js教程 > 正文

JavaScript各变量类型的判断方法

黄舟
发布: 2016-12-20 15:34:56
原创
1242人浏览过

我们很容易被漂亮的代码吸引,也不知不觉的在自己的代码库中加入这些。却没有冷静的想过它们的优劣。这不,我就收集了一系列形如 "是否为……?" 的判断的boolean函数。

isNull: function(a){
    return a === null;
},
isUndefined: function(a){
    return a === undefined;
},
isNumber: function(a){
    return typeof a === 'number';
},
isString: function(a){
    return typeof a === 'string';
},
isBoolean: function(a){
    return typeof a === 'boolean';
},
isPrimitive: function(b){
    var a = typeof b;
    return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string');       
},
isArray: function(a){
    return proto_obj.toString.call(a) === '[object Array]';
},
isFunction: function(a){
    return proto_obj.toString.call(a) === '[object Function]';
},
isPlainObject: function(o){
    if (!o || o === win || o === doc || o === doc.body) {
        return false;
    }
    return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]';        
},
isWindow: function(o){
    return o && typeof o === 'object' && 'setInterval' in o;
},
isEmptyObject: function(o){
    for(var a in o) {
    return false;
    }
    return true;
}
登录后复制

以上isXX系列中,isUndefined在类库中用的最多。如判断是否传入了某个参数,判断对象是否拥有某个属性等等。但这个函数是不必存在,我已将其移除。理由如下

isUndefined 与 使用全等(===)或typeof 多了一层函数调用。很明显多一层函数调用比直接使用原生的运算符效率会低(虽然有些微不足道),但如果isUndefined调用次数很多如上万次还是很 明显的。我曾经在邮箱框架中加入了该函数,调用次数有4000多次,从性能分析工具看占用了近1%的时间。仅仅一个判断占1%的调用时间还是很可怕的。当 然,邮箱框架内的isUndefined处在多层闭包的顶层,访问其也会占用较多时间。如果这一条还不足以让你放弃isUndefined,请看下面。

函数从一定程度上是对一些代码的封装,抽象。是组织良好代码的方式之一,且有利于降低代码的复杂性。但isNull/isUndefined/isBoolean/isNumber/isString函数内仅有一句,抽象层次很低。因此完全不必封装而提取出一个函数。

isUndefined(a) 与 a === undefined相比并不会节省几个字节(呵,你可以命名的更短但损失了可读性)。

立即学习Java免费学习笔记(深入)”;

综上,我去掉了类库中对基本类型判断的isNull/isUndefined/isBoolean/isNumber/isString,需要用到这些判断的时候直接使用typeof运算符等。

 以上就是JavaScript各变量类型的判断方法 的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号