在Javascript(ES6)中, 下面列出了四种测试相等性的方法:
- 使用" =="运算符
- 使用" ==="运算符
- SameValueZero:主要用于集合, 地图和数组中。
- SameValue:在其他地方使用
现在, 我们的主要关注点是了解javascript提供的'=='和'==='运算符之间的区别, 尽管它们看起来很相似, 但是却有很大不同。
‘==’运算符:
在Javascript中, " =="运算符也称为宽松相等运算符, 主要用于比较双方的两个值, 然后返回true或false。仅在将两个值都转换为通用类型后, 该运算符才检查相等性
类型强制
.
注意:
类型强制意味着两个值仅在尝试将它们转换为相同类型后才进行比较。让我们看一下" =="运算符将返回true的所有值。
例子:
//'==' operator
console.log(21 == 21);
console.log(21 == '21' );
console.log( 'food is love' == 'food is love' );
console.log( true == 1);
console.log( false == 0);
console.log( null == undefined);
输出如下:
在上面的代码中, 当我们将21与'21'进行比较时, javascript会将'21'转换为21的数字值, 因此我们得到true, 当我们尝试检查'true == 1'时, 会发生类似的情况, 在这种情况下, javascript基本上会将1转换为真实值, 然后进行比较并返回布尔值true。 (null == undefined)的情况很特殊, 因为当我们比较这些值时我们会得出true, 但是不清楚为什么?
在javascript中, 有两种类型的值:
对或错
true
- ‘0’
- ‘false’//将false包裹在字符串中。
- []
- {}
- 功能(){}
false
- "或"" //空字符串
- false
- 0
- null
- 未定义
- NaN //非数字
因此null和undefined都是假值, 它们表示js中的"空"值或undefined, 因此与" =="运算符的比较返回true。
现在, 让我们看一下" =="运算符将返回false的所有值。
例子:
//'==' operator
console.log(21 == 32);
console.log(21 == '32' );
console.log( true == 0);
console.log( null == false );
输出如下:
在上面的代码中, 当我们将null与false进行比较时, 我们会得到false, 因为null是原始数据类型, 即使它们属于同一个伪造的组, 它也永远不能等于布尔值。
‘===’运算符:
也称为严格相等运算符, 它同时比较值和类型, 这就是名称"严格相等"的原因。
让我们看一些代码, 其中" ==="运算符将返回true。
例子:
//'===' operator
console.log( 'hello world' === 'hello world' );
console.log( true === true );
console.log(5 === 5);
输出如下:
只需检查双方的类型和值, 然后仅打印布尔值true或false。
某些示例将返回false。
//'===' operator
console.log( true === 1);
console.log( true === 'true' );
console.log(5 === '5' );
输出如下: