什么';这有什么问题吗'';在javascript中(与空字符串相比)?

什么';这有什么问题吗'';在javascript中(与空字符串相比)?,javascript,Javascript,jsbin开始警告我,x!=''不好,我应该用x!=''替换它 为什么? 换句话说,false(以及其他falsy值,如0)将强制为空字符串。==和==运算符(严格相等运算符)确保所比较的对象是同一类型的 要进一步说明为什么会出现这种情况,您需要转到规范(由T.J.Crowder在评论中链接)。“”部分告诉我们以下内容: 如果类型(x)是布尔值,则返回比较结果到数字(x) ==y 这一节告诉我们: 如果参数为true,则结果为1。如果 这个论点是错误的 在上面的示例中,参数是false,因此我

jsbin开始警告我,
x!=''不好,我应该用
x!=''替换它

为什么?

换句话说,
false
(以及其他falsy值,如
0
)将强制为空字符串。
==
==
运算符(严格相等运算符)确保所比较的对象是同一类型的


要进一步说明为什么会出现这种情况,您需要转到规范(由T.J.Crowder在评论中链接)。“”部分告诉我们以下内容:

如果类型(x)是布尔值,则返回比较结果到数字(x) ==y

这一节告诉我们:

如果参数为true,则结果为1。如果 这个论点是错误的

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

如果类型(x)是数字,类型(y)是字符串,则返回 比较x==ToNumber(y)

调用将导致
+0
,就像调用
false
一样:

为空或仅包含空白的StringNumericLiteral为空 转换为+0

现在我们正在比较
+0!=+0,因此我们进入“x和y属于同一类型”部分,该部分告诉我们:

如果x与y的数值相同,则返回true


所以
+0
等于
+0
,因为我们使用的是
=
返回
false

哇,看看所有相关问题就知道了。这么多题为“这个javascript代码怎么了”的问题。如果你费心查找
之间的差异=
==然后你会在几秒钟内得到答案。我对一个12.7k的用户期望更高,他已经在这里工作了三年多。闭嘴者-不要基于用户来结束一个问题。这个问题是有效的。可能重复的,,@outis:谢谢你找到了真正的副本()。@ripper234:所以你需要知道每一个都做了什么(我建议读一下-|),然后决定在任何给定的情况下使用哪一个。两者都有各自的用途,尽管人们通常会倾向于严格的用法(
=
!=
)。
var x = false;
console.log(x !== ''); //true
console.log(x != ''); //false