javascript 中 ‘==’ 和‘===’的区别

转自:

JavaScript 标准参考教程(alpha) 阮一峰 (http://javascript.ruanyifeng.com/)

-------------------------------------------------------------

JavaScript 提供两种相等运算符:=====

简单说,它们的区别是相等运算符(==)比较两个值是否相等,严格相等运算符(===)比较它们是否为“同一个值”。

如果两个值不是同一类型,严格相等运算符(===)直接返回false,而相等运算符(==)会将它们转换成同一个类型,再用严格相等运算符进行比较。

严格相等运算符(===),如:

1 === "1" // false
true === "true" // false

NaN === NaN  // false
+0 === -0 // true
{} === {} // false
[] === [] // false
(function () {} === function () {}) // false
undefined === undefined // true null === null // true

 

相等运算符(==),如:

原始类型的数据会转换成数值类型再进行比较
1 == true // true // 等同于 1 === Number(true) 0 == false // true // 等同于 0 === Number(false) 2 == true // false // 等同于 2 === Number(true) 2 == false // false // 等同于 2 === Number(false) 'true' == true // false // 等同于 Number('true') === Number(true) // 等同于 NaN === 1 '' == 0 // true // 等同于 Number('') === 0 // 等同于 0 === 0 '' == false // true // 等同于 Number('') === Number(false) // 等同于 0 === 0 '1' == true // true // 等同于 Number('1') === Number(true) // 等同于 1 === 1 '\n 123 \t' == 123 // true [1] == 1 // true // 等同于 Number([1]) == 1 [1] == '1' // true // 等同于 Number([1]) == Number('1') [1] == true // true // 等同于 Number([1]) == Number(true)
undefinednull与其他类型的值比较时,结果都为false,它们互相比较时结果为true false == null // false false == undefined // false 0 == null // false 0 == undefined // false undefined == null // true

相等运算符的缺点:

相等运算符隐藏的类型转换,会带来一些违反直觉的结果。

0 == ''             // true
0 == '0'            // true

2 == true           // false
2 == false          // false

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

false == undefined  // false
false == null       // false
null == undefined   // true

' \t\r\n ' == 0     // true

 

 


posted @ 2022-04-24 14:33  Miracle丶MoRanT  阅读(162)  评论(0编辑  收藏  举报