我可以使用三等号进行 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 方面的知识。
感谢您的任何见解!
【问题讨论】:
是的,===
可以比较两个字符串,结果是true
或false
。您看到的其他示例是在对字符串进行排序列表时比较字符串。
你是对的。谢谢!
在比较你知道的字符串时,我认为使用===
而不是==
没有任何优势。 ===
通常用于比较多种类型的事物。 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 性能差异