博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 相等判断 / 类型判断
阅读量:5890 次
发布时间:2019-06-19

本文共 1120 字,大约阅读时间需要 3 分钟。

相等判断

JavaScript提供三种不同的值比较操作:

  • 严格相等 ("triple equals" 或 "identity"),使用 === ,
  • 宽松相等 ("double equals") ,使用 ==
  • 以及 Object.is (ECMAScript 2015/ ES6 新特性)

简而言之,在比较两件事情时,双等号将执行类型转换; 三等号将进行相同的比较,而不进行类型转换 (如果类型不同, 只是总会返回 false );  而Object.is的行为方式与三等号相同,但是对于NaN和-0和+0进行特殊处理,所以最后两个不相同,而Object.is(NaN,NaN)将为 true。(通常使用双等号或三等号将NaN与NaN进行比较,结果为false,因为IEEE 754如是说.) 请注意,所有这些之间的区别都与其处理原语有关; 这三个运算符的原语中,没有一个会比较两个变量是否结构上概念类似。对于任意两个不同的非原始对象,即便他们有相同的结构, 以上三个运算符都会计算得到 false 。

 

什么时候使用 Object.is 或者 三等

object.is 会对对象属性描述进行判断,如果不需要判断属性描述的情况下应优先使用三等

   参考 Object.defineProperty

 

类型判断

这里列举出常用的三种方法可以判断数据的类型

  • typeof (obj)
  • obj  instanceof  constructor
  • obj.constructor

先说第一种 typeof 

  typeof只能用于判断基本类型(即非引用类型  BooleanFunctionNumberString, undefined,)如

var arr = ['eko','tom','jerry'] ;console.log(typeof(arr));结果输出:object

 再来说说第二种 instanceof  

instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性

 

//使用格式   object instanceof constructor实例    console.log(arr instanceof Array);输出: true

 

用着中办法可以判断出引用类型的类型

第三种 object.constructor

constructor 是对象__proto__中的一个属性,指向其构造函数

console.log(arr.constructor==Array);输出:true

 

 

 

 

转载于:https://www.cnblogs.com/xiaoliwang/p/9035428.html

你可能感兴趣的文章
cp: omitting directory xxx
查看>>
OpenCV 2.4.10 Linux Qt Conifguration
查看>>
年终盘点丨细数2017云栖社区20大热点话题(附100+话题清单)
查看>>
AVL树
查看>>
AsyncTask 不能与Thread.sleep()同时使用解决方案
查看>>
Android Studio系列教程六--Gradle多渠道打包
查看>>
MVC4升级MVC5导致原项目出错的解决方法
查看>>
【设计模式】—— 组合模式Composite
查看>>
【设计模式】—— 命令模式Commond
查看>>
[LeetCode] Longest Valid Parentheses
查看>>
Log4j官方文档翻译(二、架构设计)
查看>>
Java File创建新目录和文件
查看>>
Spring的属性依赖检查
查看>>
[LeetCode] Longest Substring with At Most Two Distinct Characters
查看>>
将不确定变为确定~transactionscope何时提升为分布式事务~再续(避免引起不必要的MSDTC)...
查看>>
SSM框架——使用MyBatis Generator自动创建代码
查看>>
Winform开发框架之框架演化
查看>>
1305 Pairwise Sum and Divide
查看>>
nginx源码学习资源(不断更新)
查看>>
二:apache的Qpid消息中间件介绍
查看>>