在JavaScript中检查字符串之间是否相等的正确方法是什么?
要想了解这一点,以及Javascript的其他 "好 "与 "坏 "部分,请阅读Douglas Crockford先生和他的作品。 有一个很好的谷歌技术讲座,他总结了很多好的信息。[
更新:
凯尔-辛普森的You Don't Know JS系列非常好(而且可以免费在线阅读)。 该系列深入探讨了语言中普遍被误解的领域,并解释了Crockford建议你避免的 "坏部分"。 通过理解它们,你可以正确地使用它们,避免陷阱。
这本"Up & Going"书中有一个关于Equality的章节,其中具体总结了何时使用松散(==
)与严格(===
)运算符。
为了把一大堆细节归结为几个简单的收获,并帮助你知道在各种情况下是使用
===
还是===
,这里是我的简单规则。
- 如果比较中的任何一个值(又称一方)可能是 "真 "或 "假 "的值,避免使用"==",而使用"=="。
- 如果一个比较中的任何一个值可能是这些特定的值(
0',
"", 或
[]- 空数组),避免
===,使用
===`。- 在所有其他情况下,你可以安全地使用
==
。它不仅安全,而且在许多情况下,它以一种提高可读性的方式简化了你的代码。
我仍然推荐Crockford'的演讲给那些不想投入时间去真正理解Javascript的开发者—对于一个只是偶尔使用Javascript的开发者来说,这是很好的建议。
实际上,在javascript中,有两种方法可以制作字符串。
var str = 'Javascript';
这将创建一个原始的字符串值。
var obj = new String('Javascript');
这就创建了一个字符串类型的封装对象
类型的字符串。
typeof str //字符串
。
typeof obj // 对象
。
所以检查相等的最好方法是使用===
操作符,因为它既检查值,也检查两个操作数的类型。
如果你想检查两个对象之间是否相等,那么使用String.prototype.valueOf
才是正确的方法。
new String('javascript').valueOf() == new String('javascript').valueOf()