关于平等的困惑

时间:2017-04-26 08:01:42

标签: javascript boolean-logic

我只是想知道对结果的正确解释



// All of these evaluate to 'true'!
console.log(false == '0');
console.log(null == undefined);
console.log(" \t\r\n" == 0);
console.log('' == 0);




2 个答案:

答案 0 :(得分:0)

由于你使用的是==,它不会检查类型,只是值。在内部,所有这些值都是假值。因此它返回true。

但是,使用===也会检查类型,结果是在控制台中打印false而不是true

答案 1 :(得分:0)

这称为类型强制。

当你使用double equals(==)时,解析器会尝试强制两个操作数来实现相等。

大多数消息来源建议使用三等号(===),因为它不会应用任何类型强制。如果值是不同的类型,则意味着它们不等于。

回到你的问题:

nullempty string0都是假名值,这意味着所有都被强制为假。因此,平等检查将通过。