JavaScript各变量类型的判断方法
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相比并不会节省几个字节(呵,你可以命名的更短但损失了可读性)。
综上,我去掉了类库中对基本类型判断的isNull/isUndefined/isBoolean/isNumber/isString,需要用到这些判断的时候直接使用typeof运算符等。
以上就是JavaScript各变量类型的判断方法 的内容,更多相关内容请关注PHP中文网(www.php.cn)!
上一篇: 定义php常量的详解_php技巧
下一篇: PHP移动互联网开发之自定义函数及数组
推荐阅读
-
javascript中如何判断对象的数据类型?
-
JS获取下拉框显示值和判断单选按钮的方法_javascript技巧
-
javaScript 判断字符串是否为数字的简单方法_javascript技巧
-
用于deeplink的js方法(判断手机是否安装app)_javascript技巧
-
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性_javascript技巧
-
java判断String类型是否能转换为int的方法
-
JavaScript判断"字典"为空的方法
-
javascript如何判断控件中输入的数据为数值类型
-
JavaScript如何判断一个字符串里包含的只有number类型
-
JavaScript中判断某个字符串是否包含另一个字符串的方法