2

一部のコードをクリーンアップしようとしています(jshint警告を修正)。

の最良の代替品は何ですか

if (x == undefined) {...}

私はunderscore.jsを使用していますが、これは次のようなものです。

if (x === null || _.isUndefined(x)) {...}

または、いくつかのエッジケースがありませんか?==未定義と等しい()は何ですか?(誰もしなかったvar undefined = 'asdf'、またはそのような悪事をしたと仮定して)。

4

2 に答える 2

7

x == undefined実際に、-自体と。の2つの値を確認xundefinedますnull。ただし、宣言されたx変数がないと、ここでエラーが発生することに注意してください。これを防ぐには、...を使用します。

if (typeof x === 'undefined' || x === null) { ... }

nullしかし、実際には、この警告の本当の意味は、コードの1つのブランチで両方をチェックするべきではないということだと思いundefinedます。これらは異なる値であるためです。

ただし、これについて安全だと思われる場合は、オプションを使用して、JSHintでこれらの特定のチェックをオフにすることができeqnullます。それで...

if (x == null) { ... }

null...との両方をチェックしますがundefined、警告はトリガーされません。ただし、== undefinedこのオプションでは比較は「カバー」されないことに注意してください。


補足として、アンダースコアのisUndefinedメソッドは興味深いコードです。

_.isUndefined = function(obj) {
  return obj === void 0;
};

これは基本的に単純なものと同じですが、1つの特殊なケースをカバーしています。スクリプト内obj === undefinedのの値を上書きすることをお勧めする場合です。コンストラクトは常に「実際の」を返すためundefined、この関数はこの状況でも正しく機能します。voidundefined

于 2012-12-10T17:50:47.387 に答える
2

正しい置換は次のとおりです。

if( typeof x === "undefined")
于 2012-12-10T17:45:38.887 に答える