web-dev-qa-db-ja.com

nullチェックにunderscore.jsを使用する

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

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

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

プレーンなJavascriptでは、

if(name !== null) {}

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

プレーンなJavascriptを使用すると、関数を呼び出す必要がないため少し高速になりますが、気付かないため、考慮すべきことはほとんどありません。

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

25
Peter Olson

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

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

Underscore.js関数ではisNullは次のように記述されています

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

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

JavaScriptの比較ではどちらの演算子(== vs ===)を使用する必要がありますか?

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

var name = "someName";
if(name !== null)) {
   // do something
}
1
Chuck Norris

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

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

0
if ((!(_.isUndefined(data)) || _.isEmpty(data))) {
//Valid Data 
}else {//Not Valid}
0
Ashutosh Soni