我想我有点知道JavaScript中==和===之间的区别,那就是==在比较时会输入强制类型,但===不会.我理解以下代码是真的:
console.log(true == "1");
Run Code Online (Sandbox Code Playgroud)
但是当下面的代码是假的?
console.log(true == "true");
Run Code Online (Sandbox Code Playgroud)
当您将布尔值与另一种类型的值进行松散比较时,布尔值将被强制转换为数字。
\n\n当您比较数字和字符串时,字符串会被强制转换为数字。
\n\n完整的规则在抽象相等比较算法中有解释
\n\n过程是这样的:
\n\ntrue == "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\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |