科普等于号
总所周知
- 一个等于一般用于赋值
- 双等于和三个等于用于比较,
- 双等于一般比较内容,在== 时会先进行类型转换,再进行比较
- 三等于不仅比较内容还比较类型,在比较时一般类型比较完如果不一样就直接pass了
先看两个小案例来简单演示一下
一个等于
两个等于
这里先把[]强转为了数据类型,变成了0,然后在和0比较,为true
三个等于号
这里我们可以看到在类型不一样就直接false了
烧脑小案例
比较可爱的null
想一下null和一些简单的比较,先上我们常常觉着可以的双等于
嗯哼,好像不可以,为什么呢?我也不知道,不知道的时候可以试试,那么是不是null和所有的相比都是false呢
答案是no
看看这个:
结果为true,但是我们可以发现其实很多例子都是false所以在日常使用中后台试试就好,实验得真理!!!
接下来是三等于,其实和上面差不多;我们演示一下上面相同的代码
这里我们发现null=Object.prototype.proto,null=null结果为true
那么把null反过来呢?
废话不多说看图;
看到这里我们就需要注意一些特殊情况了,在判断时要尽量减少书写会报错的情况;
其他的小案例
这里就要涉及强转的知识:
这里强行安利一小部分常用双等于比较的强转小知识
- 仅一个运算数是数字,将另外一个转换成数值,在比较它们的数值
- 字符串间的比较,比较两个万国码
- 字符串与非数值之间的比较,将非数值转换成字符串比较
- 布尔转换为数字类型在比较
- 引用类型一般比较地址,在比较内容
画个重点
对于NaN目前和什么比较都是false