17

私の現在のプロジェクトの開発者のほとんどは、ECMAScript の空の文字列をチェックするために (私にとっては) 奇妙な方法を使用しています。

if (theString.length == 0)
    // string is empty

私は通常、代わりにこれを書きます:

if (theString == "")
    // string is empty

後者のバージョンは、より読みやすく、自然に思えます。

私が尋ねた人は誰もバージョン 1 の利点を説明できなかったようです。過去のある時点で誰かがこれがその方法だとみんなに言ったのだと思いますが、今ではその人は去り、誰もなぜこれを行うべきかを覚えていません。仕方。

2 番目のバージョンよりも最初のバージョンを選択する理由があるかどうか疑問に思っています。あるバージョンが他のバージョンよりも優れているということは重要ですか? 何らかの理由で、あるバージョンの方が安全または高速ですか?

(実際には、ECMAScript Edition 4 に準拠した Siebel eScript でこれを行います)

ありがとう。

4

3 に答える 3

33

""空の文字列リテラルと他のいくつかの文字列(" "、 )を区別するのが難しい場合があるため、実際には多くの言語でこの手法を好み'"'ます。

theString == ""しかし、ECMAScriptで避けるべき別の理由があります:0 == ""評価するtrueのと同様に、false == ""そして0.0 == ""...

...したがって、それが実際に文字列であることがわかっていない限り、弱い比較を使用すると、問題が発生する可能性があります。幸い、strict equal( )演算子を適切に使用することで、これを回避できます。theString===

if ( theString === "" )
   // string is a string and is empty

参照:

于 2009-12-01T23:18:14.067 に答える
2

問題は、が(ゼロ)にtheString設定されている場合、2番目の例がtrueと評価されることです。0

于 2009-12-01T23:15:48.910 に答える
1

正解は正しく、型チェックを理解することが重要です。ただし、パフォーマンスに関しては、文字列の比較は毎回 .length メソッドに負けますが、その差はごくわずかです。サイトの速度をミリ秒単位で短縮することに関心がない場合は、自分にとって、さらに重要なことにチームにとって、より読みやすく、保守しやすいものを選択することをお勧めします。

于 2015-09-14T15:16:39.350 に答える