在JavaScript中检查字符串相等性的正确方法是什么?

什么是正确的方法来检查JavaScript之间的字符串平等?


总是直到你完全理解的差异和使用的影响=====运营商,使用===运营商,因为它可以使你免于晦涩(非显而易见性)的错误和WTFs。 由于内部类型强制,“常规” ==运算符可能会产生非常意想不到的结果,所以使用===始终是推荐的方法。

为了深入了解这一点以及Javascript的其他“好与坏”部分,请阅读Douglas Crockford先生及其工作。 有一个伟大的Google技术讲座,他总结了很多很好的信息:http://www.youtube.com/watch?v = hQVTIJBZook


更新:

你不知道凯尔辛普森的JS系列是非常好的(并且可以在线阅读)。 该系列进入了语言中常见的误解部分,并解释了克罗克福德建议你避免的“不好的部分”。 通过理解它们,你可以正确使用它们并避免陷阱。

“Up&Going”一书包括了关于Equality的一节,以及何时使用宽松( == )vs strict( === )运算符的具体概述:

为了简化一些细节,并帮助您了解是否在各种情况下使用===== ,下面是我的简单规则:

  • 如果比较中的任何一个值(又名方)可能是truefalse值,请避免==并使用===
  • 如果比较中的任何一个值可以是这些特定值( 0""[] - 空数组),请避免==并使用===
  • 在所有其他情况下,您可以安全地使用== 。 它不仅安全,而且在很多情况下它可以简化代码,提高可读性。
  • 对于那些不想花时间去真正理解Javascript的开发者,我仍然建议Crockford的发言 - 对于偶尔使用Javascript的开发者来说,这是一个很好的建议。


    如果你知道它们是字符串,那么就不需要检查类型。

    "a" == "b"
    

    但是请注意,字符串对象不会相同。

    new String("a") == new String("a")
    

    将返回false。

    调用valueOf()方法将其转换为String对象的基元,

    new String("a").valueOf() == new String("a").valueOf()
    

    将返回true


    只有一个答案:如果所有这些方法都返回false,即使字符串看起来相同,也可能是一个字符串的左侧或右侧有空格。 因此,在比较之前,只需在字符串末尾添加一个.trim()

    if(s1.trim() === s2.trim())
    {
        // your code
    }
    

    我试图弄清楚什么是错误,我已经失去了数小时。 希望这会有助于某人!

    链接地址: http://www.djcxy.com/p/19383.html

    上一篇: What is the correct way to check for string equality in JavaScript?

    下一篇: Prevent BACKSPACE from navigating back with jQuery (Like Google's Homepage)