==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。 =:赋值运算符 ==:判断是否相等:忽略了类型进行值的比较。 ===:判断是否相等:先进行值的比较,如果
==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。
==相等
比较两个值的时候,有两种情况,一种如果两个值的类型相同,就直接比较;另一种如果两个值得类型不同,则会尝试改变为相同的类型在进行比较 数字和字符串比较
大家猜一猜结果是什么True?False?
结果为True
JS是怎么转换的呢?
JS尝试转换字符串'chuichui',但是该字符串并不能转换为数字,这时候转换的结果就为NaN 布尔值和其他类型比较 其实JS在布尔值和其他类型比较时,都是把布尔值转换为数字,再进行比较的,举个列子
JS会将true转化为数字1,再做比较
转换顺序
null和undefined比较
大家猜一猜,结果是True?False?
结果为True 小心 有一个需要注意的地方,有些转换你可能猝不及防
结果为True
下面我们在说说严格相等 === ===严格相等 有了前面的相等的定义,我想大家能猜个八九不离十,严格相等就是类型和值完全相同,这里不存在以上所存在的转换问题 最后 操作数1 == 操作数2, 操作数1 === 操作数2 比较过程: 双等号==: (1)如果两个值类型相同,再进行三个等号(===)的比较 (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较: 1)如果一个是null,一个是undefined,那么相等 2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较 三等号===: (1)如果类型不同,就一定不相等 (2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断) (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。 (4)如果两个值都是true,或是false,那么相等 (5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等 (6)如果两个值都是null,或是undefined,那么相等 |
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30