LearningRecord
LearningRecord copied to clipboard
== 和 === 有什么区别?
== 和 === 的工作原理是一样的,== 和 === 都会检查操作数的类型。
== 允许在相等比较中进行强制类型转换,然后进行值的比较, 而 === 不允许,只有类型相同并且值相等时,才返回true。
== 如果两者类型不同,首先需要进行类型转换。然后比较值是否相等,具体流程如下:
1.首先判断两者类型是否相同,如果相等,判断值是否相等. 2.如果类型不同,进行类型转换 3.判断比较的是否是 null 或者是 undefined, 如果是, 返回 true . 4.判断两者类型是否为 string 和 number, 如果是, 将字符串转换成 number 5.判断其中一方是否为 boolean, 如果是, 将 boolean 转为 number 再进行判断 5.判断其中一方是否为 object 且另一方为 string、number 或者 symbol , 如果是, 将 object 转为原始类型再进行判断
扩展: 0.1 + 0.2 === 0.3 // false 0.1 + 0.2 // 0.30000000000000004 原因:计算机不能精确表示0.1, 0.2这样的浮点数,计算时使用的是带有舍入误差的数,但不是所有的浮点数在计算机内部都存在舍入误差,比如0.5就没有舍入误差 为了·解决这个问题可以使用toFixed() (0.1 + 0.2).toFixed(10) // 0.3 你不知道的类型转换