我只是想知道对结果的正确解释
// All of these evaluate to 'true'!
console.log(false == '0');
console.log(null == undefined);
console.log(" \t\r\n" == 0);
console.log('' == 0);

答案 0 :(得分:0)
由于你使用的是==,它不会检查类型,只是值。在内部,所有这些值都是假值。因此它返回true。
但是,使用===也会检查类型,结果是在控制台中打印false而不是true
答案 1 :(得分:0)
这称为类型强制。
当你使用double equals(==
)时,解析器会尝试强制两个操作数来实现相等。
大多数消息来源建议使用三等号(===
),因为它不会应用任何类型强制。如果值是不同的类型,则意味着它们不等于。
回到你的问题:
null
,empty string
和0
都是假名值,这意味着所有都被强制为假。因此,平等检查将通过。