避免空比较

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

最新文章

  1. api接口签名验证
  2. Spring mvc 报错:No qualifying bean of type [java.lang.String] found for dependency:
  3. [C++][语言语法]标准C++中的string类的用法总结
  4. Python学习基础教程(learning Python)--2.2.1 Python下的变量解析
  5. ifdebug
  6. solr4.9r+ Eclipse 4.3+ tomcat 7.5 +winds7(二)
  7. 遇到bug我会怎么做
  8. Java关键字汇总
  9. 接口和抽象类的区别(JDK1.8)
  10. 洛谷:P1182:数列分段`Section II`
  11. [转]JSOUP 抓取HTTPS/HTTP网页,校验问题
  12. Linux 磁盘使用查看 查看使用磁盘程序 Monitoring disk activity in linux
  13. luogu1712 区间 (尺取法+线段树)
  14. fastdfs+nginx集群高可用搭建的一些坑!!记录一下
  15. LeetCode 429 N-ary Tree Level Order Traversal 解题报告
  16. cocos2d-x C++ 原始工程引擎运行机制解析
  17. Connection parameters are correct , SSL not enabled
  18. 使用PerfView监测.NET程序性能(三):分组
  19. VMWare虚拟机安装Linux系统时安装界面显示不全的解决、Linux分区
  20. docker之容器管理

热门文章

  1. 23-C#笔记-正则表达式
  2. 常用dos命令(4)
  3. 关于selectpicker的多选问题
  4. Windows空间清理2
  5. [TJOI2009]猜数字(洛谷 3868)
  6. webpack 配置多入口文件,输出多出口文件
  7. FPGA硬件加速
  8. Pod Preset玩转K8S容器时区自动配置
  9. Flink 源码解析 —— Flink TaskManager 有什么作用?
  10. DDR3(4):读控制