我可以为JavaScript字符串比较使用三个等号吗?

14

这是一个非常基本的问题,我知道,但是我无法从Google和Stack Overflow中理解发生了什么。

我查看了这里这里来学习如何比较JavaScript中的字符串。他们都没有在答案中提到三个等于号(===),并说最好使用自己的函数(str1 < str2 ? -1 : str1 > str2)。

然而,在Stack Overflow的关于===的解释中(这里这里),答案包含字符串比较。 从我在那些答案中看到的,===确实适用于字符串比较,那为什么不包括它在字符串比较的答案中呢?

我只是想扩展我对JavaScript的了解。

感谢任何见解!


11
是的,=== 可以比较两个字符串,并返回 truefalse。你看到的其他例子是在讨论对字符串列表进行排序时如何进行比较。 - Pointy
你说得对。谢谢! - Neta
1
我认为在比较你知道将会是字符串的东西时,使用===而不是==没有任何优势。===通常用于比较将会是多种类型的事物。例如:'0' !== 0。我假设==也更快,但我太懒了,无法找到支持这一点的基准测试。 - Rooster
2
只有当值的数据类型很重要,即可能导致不良行为时,才应该使用 ===。比如,如果某些东西需要一个 0 来计算,但是却得到了 false 或字符串 '0',这可能会导致不精确的计算或会使进程崩溃的字符串值。在 JavaScript 中,三等号现在被滥用得厉害,我曾经因为不必要地使用 === 而导致问题(即使数据类型并不重要,但检查 '0' 的数据类型与 0 的数据类型仍然会导致问题),不得不修复已提交代码中的多个 bug。 - Davicus
2个回答

6
var str1 = "1";
var str2 = 1;
if (str1 == str2) {
      //Below code executes as it's true.
      console.log("Yes, value of both are equal.");
}

if (str1 === str2) {
     //Below code never executes as it's false.
     console.log("No, both are not equal as type differs.");
}

==比较的是值,而===同时比较的是值和类型。 ===可以用于字符串比较,但如果您确定只需比较字符串,则==就足够了。===只是一个更好的选择。


2
谢谢你的例子,但我知道=====之间的区别,那不是我的问题。 - Neta

0

你可以使用两种方法来比较字符串,只是当你想要比较值和类型时,你使用===。还有什么其他问题吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接