编写可维护的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以及更低版本中是无效的。
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以及更低版本中是无效的。
相关文章推荐
- 《编写可维护的 JavaScript》读书笔记第8章:避免“空比较”
- ↗☻【编写可维护的JavaScript #BOOK#】第8章 避免“空比较”
- 《编写可维护的 JavaScript》读书笔记第8章:避免“空比较”
- <<编写可维护的JavaScript>>之避免使用全局变量
- 编写可维护的JavaScript 收纳架
- ↗☻【编写可维护的JavaScript #BOOK#】命名空间
- 如何编写可维护的面向对象JavaScript代码
- 如何编写可维护的面向对象JavaScript代码
- 如何编写可维护的面向对象JavaScript代码
- 编写可维护的JavaScript
- 如何编写可维护的面向对象JavaScript代码
- ↗☻【编写可维护的JavaScript #BOOK#】第2章 注释
- 编写可维护面向对象的JavaScript代码[翻译]
- ↗☻【编写可维护的JavaScript #BOOK#】第3章 语句和表达式
- ↗☻【编写可维护的JavaScript #BOOK#】第4章 变量、函数和运算符
- 如何编写可维护的JavaScript代码
- 如何编写可维护的面向对象JavaScript代码
- JavaScript探秘:编写可维护的代码的重要性
- 编写高度可维护javascript代码的几点关键性原则
- ↗☻【编写可维护的JavaScript #BOOK#】第1章 基本的格式化