javascript - JavaScript 中空格等于整数 0 吗?

标签 javascript whitespace

我的应用程序行为异常,并认为下面的代码会意外地执行 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/

相关文章:

javascript - 如何等到效果结束? (我看了重复的)

css - 将长帖子标题换行

php - 如何删除字符串的第一个空格

javascript - __zone_symbol__currentTask 错误

javascript - JQuery Fileupload 带有表单数据并且只有单个文件

javascript - 处理 JavaScript 对象中的连字符

linux - 查找最后几行中有空格的所有文件

javascript - YouTube iframe 的 jQuery 弹出窗口在 Firefox 中不起作用

python - 在 60 个字符后分解长字符串(添加空格)的最短方法?

javascript - 使用 JavaScript 删除标签之间的所有空格