在 JavaScript 中检查字符串相等性的正确方法是什么?
2022-08-29 22:09:21
在JavaScript中检查字符串之间是否相等的正确方法是什么?
在JavaScript中检查字符串之间是否相等的正确方法是什么?
总是在您完全理解使用 和 运算符的区别和含义之前,请使用运算符,因为它将使您免于晦涩难懂(不明显)的错误和 WTF。由于内部的类型强制,“常规”运算符可能会产生非常意外的结果,因此始终使用推荐的方法。==
===
===
==
===
要深入了解这一点,以及Javascript的其他“好与坏”部分,请阅读Douglas Crockford先生及其工作。有一个很棒的Google Tech Talk,他总结了很多好的信息:http://www.youtube.com/watch?v=hQVTIJBZook
更新:
凯尔·辛普森(Kyle Simpson)的《你不知道JS》系列非常出色(并且可以在线免费阅读)。该系列深入探讨了该语言中经常被误解的领域,并解释了克罗克福德建议你避免的“坏部分”。通过了解它们,您可以正确使用它们并避免陷阱。
“Up & Going”一书包括一个关于平等的部分,并具体总结了何时使用松散()与严格()运算符:==
===
为了将大量细节归结为一些简单的要点,并帮助您知道是使用还是在各种情况下使用,以下是我的简单规则:
==
===
- 如果比较中的任一值(也称为侧)可以是 或 值,请避免使用 。
true
false
==
===
- 如果比较中的任一值可以是这些特定值(、 或 -- 空数组),请避免使用 。
0
""
[]
==
===
- 在所有其他情况下,您都可以安全地使用 。它不仅安全,而且在许多情况下,它以一种提高可读性的方式简化了代码。
==
我仍然向那些不想花时间真正理解Javascript的开发人员推荐Crockford的演讲 - 对于一个偶尔使用Javascript的开发人员来说,这是一个很好的建议。
如果您知道它们是字符串,则无需检查类型。
"a" == "b"
但是,请注意,字符串对象将不相等。
new String("a") == new String("a")
将返回 false。
调用 valueOf() 方法将其转换为 String 对象的基元,
new String("a").valueOf() == new String("a").valueOf()
将返回 true