gpt4 book ai didi

javascript - javascript 中的 != '' 有什么问题(与空字符串相比)?

转载 作者:行者123 更新时间:2023-11-30 08:12:03 25 4
gpt4 key购买 nike

jsbin 开始警告我 x != '' 不好,我应该将其替换为 x !== ''

为什么?

最佳答案

var x = false;
console.log(x !== ''); //true
console.log(x != ''); //false

换句话说,false(以及其他虚假值,如0)将强制转换为空字符串。 !===== 运算符(严格相等运算符)确保被比较的事物属于同一类型。


要详细说明为什么会这样,您需要查看规范(由 T.J. Crowder 在评论中链接)。 “Abstract Equality Comparison Algorithm”部分告诉我们以下内容:

If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.

关于 ToNumber 的部分告诉我们:

The result is 1 if the argument is true. The result is +0 if the argument is false.

在上面的例子中,参数是false,所以我们现在比较+0 != ''。将数字与字符串进行比较时,遵循以下规则:

If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).

调用 ToNumber on an empty string结果为 +0,就像它对 false 所做的那样:

A StringNumericLiteral that is empty or contains only white space is converted to +0.

现在我们正在比较+0 != +0,所以我们进入“x 和y 是同一类型”部分,它告诉我们:

If x is the same Number value as y, return true.

所以 +0 等于 +0 并且因为我们使用 != 它返回 false

关于javascript - javascript 中的 != '' 有什么问题(与空字符串相比)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com