我们都知道js中判断两个数是否相等有两个操作符==
和===
。==
是不严格相等,在比较过程中会先将比较数进行强制类型转化,在进行值比较,而===
是严格相等,它不会对数值的类型进行强制转换,所以理解为===
会对数进行双重校验,先比较类型,再比较值。如果两个数的类型都不相等,那么这两个数肯定就不相等啦~
对于===
这种严格相等比较的话大家基本上不会有什么异议,但是==
真的是傻傻分不清啊!!!
现在整理一份便于比较的小tips,请查收~
首先js中有个比较特殊的数---NAN
,这个数与任意数相比较都为false
,hhhh,甚至与自身做比较时也是false
NaN == "0" //false
NaN == null //false
NaN == undefined //false
NaN == [] //false
NaN == {} //false
NaN == 0 //false
NaN == false //false
哈哈哈哈,感觉是不是还挺省事,就special,那我们怎么判断一个值是否为NaN
呢,一般通过isNaN()
函数判断的
js中还有两个特殊的数,null和undefined。这两个值互相等且自身等,其余情况与谁相比都不相等。
null == null //true
null == undefined //true
undefined == null //true
undefined == undefined //true
其余的类型都是会隐式转化成对应的值来做比较的,比较规则如下表:
被比较数B | Number | String | Boolean | Object | 比较数A | Number | A === B | A === ToNumber( B ) | A === ToNumber( B ) | A == ToPrimitive( B ) | String | ToNumber( A ) === B | ToNumber( A ) === ToNumber( B ) | ToNumber( A ) === ToNumber( B ) | ToPrimitive( B ) == A | Boolean | ToNumber( A ) === B | ToNumber( A ) === ToNumber( B ) | ToNumber( A ) === ToNumber( B ) | ToNumber( A ) == ToPrimitive( B ) | Object | ToPrimitive( A ) == B | ToPrimitive( A ) == B | ToPrimitive( A ) == ToPrimitive( B ) | A === B |
在上面的表格中,ToNumber(A)
尝试在比较前将参数 A 转换为数字。ToPrimitive(A)
通过尝试调用 A 的A.toString()
和 A.valueOf()
方法,将参数 A 转换为原始值(Primitive)。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!