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

Posted

技术标签:

【中文标题】我可以使用三等号进行 JavaScript 字符串比较吗?【英文标题】:Can I use triple equals for JavaScript string comparison? 【发布时间】:2016-02-24 19:20:21 【问题描述】:

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

我查看了 here 和 here 来学习如何在 javascript 中比较字符串。在他们的回答中都没有提到三等号(===),并表示最好使用自己的函数(str1 < str2 ? -1 : str1 > str2)。

但是,通过 Stack Overflow 中关于 === 的解释(here 和 here),答案包含字符串比较。 从我在这些答案中看到的,=== 确实适用于字符串比较,那么为什么它没有包含在字符串比较答案中?

我只是想扩展我在 JavaScript 方面的知识。

感谢您的任何见解!

【问题讨论】:

是的,=== 可以比较两个字符串,结果是truefalse。您看到的其他示例是在对字符串进行排序列表时比较字符串。 你是对的。谢谢! 在比较你知道的字符串时,我认为使用=== 而不是== 没有任何优势。 === 通常用于比较多种类型的事物。 IE。 '0' !== 0。我认为== 也更快,但我懒得找你的基准来支持它。 只有在值的数据类型很重要时才应该使用 ===,这意味着当它可能导致不良行为时。就像某些东西需要 0 来计算但得到一个 false 或字符串“0”,这可能导致计算不准确或字符串值可能会阻塞进程。如今,三等号在 JavaScript 中被滥用,我不得不修复提交代码中的多个错误,以便在不必要并导致问题时将 === 更改为 ==(这意味着数据类型无关紧要)只是检查 '0' 与 0 的数据类型导致进程阻塞)。 【参考方案1】:
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】:

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

【讨论】:

以上是关于我可以使用三等号进行 JavaScript 字符串比较吗?的主要内容,如果未能解决你的问题,请参考以下文章

双等号 (==) 和三等号 (===) 之间的 JavaScript 性能差异

双等号 (==) 和三等号 (===) 之间的 JavaScript 性能差异

三等号(===)在AssemblyScript中的行为是否不同?

js中两个等号(==)和三个等号(===)的区别

javascript基础:等号比较

三等号 (===) 在 AssemblyScript 中的行为是不是不同?