编写可维护的JavaScript-随笔(六)
避免空比较
If(item !== null){
item.sort();
Item.forEach(function(item){
//执行代码
}
}
}
以上判断中item期待的是数组类型的,但是如果item是数值或者字符串的话也会进入if执行条件,只进行和null的比较并不是真正安全的
检测原始值
如果希望一个值是字符串、数字、布尔值、或者undefined,最佳选择是使用typeof运算符,typeof会返回一个表示值的类型的字符串
字符串,typeof返回string
数字,typeof返回number
布尔值,typeof返回boolean
undefined,typeof返回undefined
语法形式:①、typeof variable ②、typeof(variable)
未定义的变量和值为undefined的变量通过typeof都返回undefined
typeof null 返回object
一般不使用null进行检测,除非所期望的值真的是null,应当使用全等与null进行比较
检测引用值
引用值也成为对象,几种引用类型:object、array、date、error
引用对象使用typeof检测返回值都是object
检测某个引用值的类型的最好方法是使用instanceof运算符
基本语法:value instanceof constructor(引用类型)
Instanceof不仅检测这个对象的构造器,还检测原型链,默认情况下,每个对象都继承自object,一次每个对象 value instanceof Object 都返回true
函数和数组一般用不着使用instanceof
检测函数最好的方法是使用typeof返回function
检测数组的最古老的方法是鸭式辨型,通过检测目标变量是否有sort方法
更优雅的解决方案:Object.prototype.toString.call(value) === “[object Array]”
检测属性
当检测一个属性是否在对象中存在时
//不好的写法
If(object[propertyName]){
//一些代码
}
If(object[propertyName] != null){
//一些代码
}
If(object[propertyName] != undefined){
//一些代码
}
以上的写法实际是通过给定的名字检查属性的值,当值为0,空字符串,false,null和undefined时判断就会出现错误。
判断属性是否存在最好的方法是使用in运算符
var object = {
count:0,
related:null
}
//好的写法
if(“count” in object){
//执行的代码
}
如果指向检测实例对象中的某个属性是否存在,则使用hasOwnProperty()方法,实例中存在这个属性则返回true,如果这个属性只存在于原型中则返回false
最新文章
- api接口签名验证
- Spring mvc 报错:No qualifying bean of type [java.lang.String] found for dependency:
- [C++][语言语法]标准C++中的string类的用法总结
- Python学习基础教程(learning Python)--2.2.1 Python下的变量解析
- ifdebug
- solr4.9r+ Eclipse 4.3+ tomcat 7.5 +winds7(二)
- 遇到bug我会怎么做
- Java关键字汇总
- 接口和抽象类的区别(JDK1.8)
- 洛谷:P1182:数列分段`Section II`
- [转]JSOUP 抓取HTTPS/HTTP网页,校验问题
- Linux 磁盘使用查看 查看使用磁盘程序 Monitoring disk activity in linux
- luogu1712 区间 (尺取法+线段树)
- fastdfs+nginx集群高可用搭建的一些坑!!记录一下
- LeetCode 429 N-ary Tree Level Order Traversal 解题报告
- cocos2d-x C++ 原始工程引擎运行机制解析
- Connection parameters are correct , SSL not enabled
- 使用PerfView监测.NET程序性能(三):分组
- VMWare虚拟机安装Linux系统时安装界面显示不全的解决、Linux分区
- docker之容器管理