JavaScript | '===' vs '=='比较运算符
在 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 == 1' 时会发生类似的情况,在在这种情况下,javascript 基本上将 1 转换为真值,然后比较并返回布尔值 true。 (null == undefined) 的情况很特殊,因为当我们比较这些值时,我们得到了正确的结果,但不清楚为什么?
在 javascript 中有两种类型的值: true 或 false
真的
- '0'
- 'false' // false 包裹在字符串中。
- []
- {}
- 函数(){}
错误的
- ” 或 “” // 空字符串
- 错误的
- 0
- 空值
- 不明确的
- NaN // 非数字
因此 null 和 undefined 都是 false 值,它们表示 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 是一种原始数据类型,它永远不会等于布尔值,即使它们属于同一个 falsy 组。
'==='运算符:也称为严格相等运算符,它比较值和类型,这就是名称“严格相等”的原因。
让我们看一些代码,其中 '==='运算符将返回 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');
输出: