16
var name = "someName";
if(name !=null) {
   // do something
}
  1. 私は現在http://underscorejs.org/#isNullを使用していますが、どうすれば同じことを行うことができますか?underscore.js
  2. そのような機能のパフォーマンスに関して、わずかな改善はありますか。
4

4 に答える 4

26

アンダースコアでは、使用できます

if(!_.isNull(name)) {}

プレーンなJavascriptでは、使用する必要があります

if(name !== null) {}

!=型強制を行い、undefined != nullを返すため、緩い不等式演算子は避ける必要がありfalseます。

プレーンな Javascript を使用すると、関数を呼び出す必要がないため、わずかに高速になりますが、ほとんど気にする必要はありません。

読みやすさに関しては、どちらの方法も好みませんが、このような単純なチェックのためにライブラリ関数を呼び出すのは、少し過剰で冗長に思えます。

于 2012-05-25T08:31:54.447 に答える
1

underscore.js では、その機能を実現するためにこれを記述する必要があります。

var name = "someName";
if(!(_.isNull(name ))) {
   // do something
}

underscore.js 関数isNullでは、このように記述されています

_.isNull = function(obj) {
    return obj === null;
  };

したがって、違いは==コードと===underscore.jsでの使用です。その違いの詳細については、この質問を参照してください。

JavaScript の比較では、どの等号演算子 (== と ===) を使用する必要がありますか?

PS このような単純な場所でライブラリを使用する代わりに、独自の条件を作成することをお勧めします。

var name = "someName";
if(name !== null)) {
   // do something
}
于 2012-05-25T08:31:05.590 に答える
0

nameが空の文字列、、数値、またはその他の偽の値である場合はfalse0テストnullに関する限りそれが考慮されるため、元のコードには欠陥があります。

原則として、ANY関数の呼び出しはオーバーヘッドであり、可能であれば回避する必要があります。この場合、値がnullかどうかをテストするためだけに関数を呼び出すと、非常に簡単に書くことができるif( name === null)のに、ばかげています、IMO ...

于 2012-05-25T08:30:32.127 に答える