Js中 == 和 === 的区别

摘要:两个不同的基本数据类型: 如果两个基本数据类型(string、number)不同,会将它们转化为数据类型,再进行比较。基本数据类型与引用数据类型: 将引用数据类型(function、object,其中object包含array)转化

" == " 情况

1、两个不同的基本数据类型: 如果两个基本数据类型(string、number)不同,会将它们转化为数据类型,再进行比较。例如:

0 == ''                                                  // true
0 == '0'                                                 // true
1 == '1'                                                 // true
'0' == ''                                                // false

false == '0'                                             // true
false == 'false'                                         // false
false == null                                            // false
false == undefined                                       // false
null == undefined                                        // true

0 === ''                                                 // false
0 === '0'                                                // false
1 === '1'                                                // false

false === '0'                                            // false
null === undefined                                       // false


2、 基本数据类型与引用数据类型: 将引用数据类型(function、object,其中object包含array)转化(后台自动调用 `Object.prototype.valueOf() )为它的原始值,再进行比较。例如:

[1,2] == '0'                                            // true
function(){return ['1,2']}() == '1,2'                   // true

[1,2] === '0'                                           // false
function(){return ['1,2']}() === '1,2'                  // false


3、 两个引用类型: 判断两者之间的引用路径。例如:

[1,2] == [1,2]                                          // false
[1,2] === [1,2]                                         // false


" === " 情况

从以上示例可以看出,不做类型转化,类型不同一定返回 fasle 。 总结:推荐使用 “===”, 只要类型不一致,直接返回 fasle;“==” 会造成类型转换再进行比较, 不严谨。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_4493