在JavaScript中输入强制

pho*_*sis 5 javascript

我想我有点知道JavaScript中==和===之间的区别,那就是==在比较时会输入强制类型,但===不会.我理解以下代码是真的:

console.log(true == "1");
Run Code Online (Sandbox Code Playgroud)

但是当下面的代码是假的?

console.log(true == "true");
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 4

当您将布尔值与另一种类型的值进行松散比较时,布尔值将被强制转换为数字。

\n\n

当您比较数字和字符串时,字符串会被强制转换为数字。

\n\n

完整的规则在抽象相等比较算法中有解释

\n\n

过程是这样的:

\n\n
true == "true" \xe2\x94\x80\xe2\x94\x90\n                \xe2\x94\x9c\xe2\x94\x80 Number(true)   // 1\n 1   == "true" \xe2\x94\x80\xe2\x94\xa4\n                \xe2\x94\x9c\xe2\x94\x80 Number("true") // NaN\n 1   ==  NaN   \xe2\x94\x80\xe2\x94\xa4\n                \xe2\x94\x9c\xe2\x94\x80 // Comparing with `NaN` always produces `false`\n   false       \xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n