涉及面试题:== 和 === 有什么区别?
对于 ==
来说,如果对比双方的类型不一样的话,就会进行类型转换,这也就用到了我们上一章节讲的内容。
假如我们需要对比 x
和 y
是否相同,就会进行如下判断流程:
null
和 undefined
,是的话就会返回 true
string
和 number
,是的话就会将字符串转换为 number
1 == ‘1‘
↓
1 == 1
boolean
,是的话就会把 boolean
转为 number
再进行判断
‘1‘ == true ↓ ‘1‘ == 1 ↓ 1 == 1
object
且另一方为 string
、number
或者 symbol
,是的话就会把 object
转为原始类型再进行判断
‘1‘ == { name: ‘yck‘ }
↓
‘1‘ == ‘[object Object]‘
思考题:看完了上面的步骤,对于
[] == ![]
你是否能正确写出答案呢?
如果你觉得记忆步骤太麻烦的话,我还提供了流程图供大家使用:
当然了,这个流程图并没有将所有的情况都列举出来,我这里只将常用到的情况列举了,如果你想了解更多的内容可以参考 标准文档。
对于 ===
来说就简单多了,就是判断两者类型和值是否都相同。
原文:https://www.cnblogs.com/keyng/p/12932288.html