您的位置:首页 > Web前端 > JavaScript

编写可维护的javascript:避免空比较

2014-11-10 10:11 162 查看
1、检测原始值:typeof

2、检测引用值:

内置的引用类型为:Object、Array、Date、Error

使用instanceof检测

对于函数和数组来说,都不用instanceof方式检测

3、检测函数

typeof

例如:typeof myFunc === "function"

在IE8以及更早版本的浏览器中,应该使用in来判断。例如:

“querySelectorAll” in document

4、检测数组:

使用duck typing:

function isArray(value){

return typeof value.sort === "function";

}

目前很多类库使用的方法是:

function isArray(value){

if(typeof Array.isArray === 'function'){

Array.isArray(value);

}else{

return Object.prototype.toString.call(value) === '[object Array]';

}

}

目前,IE9以及以上浏览器等浏览器都已经实现了Array.isArray()方法。

5、检测属性

另外一种用到null以及undefined的场景是当检测一个属性是否在对象中存在时。

判断属性是否存在的最好办法是使用in运算符。in运算符仅仅会简单地判断属性是否存在,而不会去读取属性的值。

如果只想检查实例对象的某个属性是否存在,则使用hasOwnProperty()方法。但是这种方法在IE8以及更低版本中是无效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: