1

私は通常、次のテストを使用して、JavaScript 変数が定義されているかどうかをテストします。

if (typeof a == 'undefined')
    a = 'default value'

ただし、代わりに次を使用する方が安全であると示唆する多くの人々を見てきました。

if (typeof a === 'undefined')
    a = 'default value'

==と演算子の違いは認識していますが、安全ではない===理由を理解できません。typeof a == 'undefined'

最初のコード例が安全でない、または問題を引き起こす可能性があるシナリオを教えてください。また、最初の構文よりも後者の構文を使用する利点は何ですか?

4

2 に答える 2

6

なぜtypeof a == 'undefined'危険なのか理解できない

危険ではありません。まったく問題ありません。typeof演算子はstring を返すことが保証されているため、常に 2 つの文字列を比較することになります。抽象等価アルゴリズムは、厳密な等価と同じように動作します。

于 2013-09-24T18:24:05.550 に答える
4

typeof aは常に文字列である==ため、===常に同じ結果が得られます。つまり、それらの間に大きな違いはありません (唯一の違いは、一方が他方よりも長いということです ;) )。

警告、個人的な意見:==オペレーターは完全に恐ろしいと思います。2 つの異なる比較演算子を使用することをお勧めします。異なる型の 2 つのオブジェクトが等しい言語は他にありません。これは非常識です。===したがって、良い習慣であるため、人々は常に使用する傾向があります。ですから、この状況では、それはただの習慣だと思います... 良い習慣です。

于 2013-09-24T18:23:29.503 に答える