我的应用程序行为异常,并认为下面的代码会意外地执行 else 语句。
代码
if(" " != 0) {
console.log("whitespace is not zero");
}
else {
console.log("bar");
}
Firebug 输出
bar
我认为空格是一个字符串,与整数零比较应该返回 false,就像上面的情况一样,但我不知道为什么它会是 else 语句。
谁能解释一下为什么吗?
最佳答案
在 JS 中,""== 0
等于 true
与宽松/宽松比较,您应该使用严格相等运算符 ===
/!==
相反:
" " !== 0
达到第一个条件。
<小时/>测试:
console.log(" " == 0); // true
console.log(" " === 0); // false
<小时/>
松散比较图表:
"" == "0" // false
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true
严格比较表:
"" === "0" // false
0 === "" // false
0 === "0" // false
false === "false" // false
false === "0" // false
false === undefined // false
false === null // false
null === undefined // false
" \t\r\n" === 0 // false
(道格拉斯·克罗克福德的示例)
<小时/>良好实践:
只要有可能,请使用严格相等运算符,因为使用松散相等运算符,JS 会进行类型强制,这会对性能造成影响,并且并不总是产生预期结果,如下所示以上对比图。
关于javascript - JavaScript 中空格等于整数 0 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307603/