JavaScriptで文字列の等質性をチェックする正しい方法は何ですか?

JavaScriptで文字列間の等価性をチェックする正しい方法は何ですか?

always ===== 演算子の使用の違いと意味を完全に理解するまでは、=== 演算子を使用してください。なぜなら、=== 演算子は不明瞭な (明らかでない) バグや WTF からあなたを救うことができるからです。 通常の" == 演算子は、内部で型強制を行っているため、非常に予期しない結果になることがあります。

この点や、Javascriptの他の「良い点と悪い点」についての洞察は、Douglas Crockford氏と彼の研究を読んでください。 彼が多くの良い情報をまとめた素晴らしいGoogle Tech Talkがあります。[http://www.youtube.com/watch?v=hQVTIJBZook][1]


更新情報:

Kyle Simpson氏のYou Don't Know JSシリーズは素晴らしいです(オンラインで無料で読めます)。 このシリーズでは、一般的に誤解されている言語の領域にまで踏み込んで、Crockfordが避けた方がいいと言っている「悪い部分」を説明しています。 それらを理解することで、適切な使い方ができ、落とし穴を避けることができます。

Up & Going]3」にはEqualityという項目があり、緩い(==)演算子と厳密な(===)演算子をいつ使うかについて具体的にまとめられています。

たくさんの詳細をいくつかの簡単な要点に集約し、様々な状況で ===== のどちらを使うべきかを知るための助けとなるように、私の簡単なルールを紹介します。

  • 比較の中のどちらかの値(別名サイド)が true または false の値になる可能性がある場合は、== を避けて === を使用してください。
  • 比較の中のどちらかの値がこれらの特定の値(0, "", [] --空の配列)である可能性がある場合、== を避けて === を使用してください。
  • その他のすべてのケースでは、==を使っても安全です。安全なだけでなく、多くの場合、コードを単純化して読みやすさを向上させることができます。

Javascriptを理解するために時間を費やしたくない開発者には、Crockford氏の講演をお勧めします—たまにしかJavascriptを使わない開発者にとっても良いアドバイスです。

解説 (13)

文字列であることがわかっているのであれば、タイプを確認する必要はありません。

"a" == "b"

ただし、文字列オブジェクトは等しくはならないことに注意してください。

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

は false を返します。

valueOf()メソッドを呼び出して、Stringオブジェクトのプリミティブに変換します。

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

は真を返します。

解説 (6)

javascriptで文字列を作るには、実は2つの方法があります。

  1. var str = 'Javascript'; これはプリミティブな文字列値を作成します。

  2. var obj = new String('Javascript'); これは、String 型のラッパーオブジェクトを作成します。 型のラッパーオブジェクトを作成します。

    typeof str // 文字列. typeof obj // オブジェクト.

このように、等しいかどうかをチェックするには、両方のオペランドの型だけでなく、値もチェックするので、===演算子を使うのがベストです。

もし2つのオブジェクトが同じであるかどうかをチェックしたい場合は,String.prototype.valueOfを使うのが正しい方法です.

new String('javascript').valueOf() == new String('javascript').valueOf()
解説 (0)