web-dev-qa-db-ja.com

値が未定義、nullまたはfalseのみであるかどうかのJavaScriptチェック

関数を作成する以外に、JavaScriptでのみ値がundefinednullまたはfalseであるかどうかを確認する簡単な方法はありますか?

以下のifステートメントはif(val===null && val===undefined val===false)と同等ですコードは正常に動作します。短い同等のものを探しています。

if(val==null || val===false){
  ;
}

上記val==nullは、val=undefined または val=null

ビット単位の演算子、または他のトリックを使用することを考えていました。

39
Lime

さて、あなたはいつでも「あきらめる」ことができます:)

function b(val){
    return (val==null || val===false);
}
33
hugomg

それを行う最良の方法は次のとおりです。

if(val != true){
//do something
} 

Valがfalse、NaN、またはundefinedの場合、これはtrueになります。

13
David Hoffman

あなたが探しているのは!!val==falseであると思います-!val(さらに短く)に変えることができます:

分かりますか:

function checkValue(value) {
    console.log(!!value);
}

checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false

checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true

!演算子を使用して値を反転することで機能します。

たとえばnullを1回フリップすると、次のようになります。

console.log(!null) // that would output --> true

そのように2回ひっくり返すと:

console.log(!!null) // that would output --> false

undefinedまたはfalseと同じです。

あなたのコード:

if(val==null || val===false){
  ;
}

その後、次のようになります。

if(!val) {
  ;
}

これは、文字列があっても長さがゼロの場合でもすべての場合に機能します。これを数値0(ダブルフリップするとfalseになります)でも動作させたい場合、ifは次のようになります。

if(!val && val !== 0) {
  // code runs only when val == null, undefined, false, or empty string ""
}
5
SudoPlz

その方法の1つは次のとおりです。

var acceptable = {"undefined": 1, "boolean": 1, "object": 1};

if(!val && acceptable[typeof val]){
  // ...
}

制限があれば、チェックが高速になるため、操作の数が最小限に抑えられると思います。

2
Eugene Lazutkin

別の解決策:

ドキュメントに基づいて、値が0、未定義、nullなどでない場合、Booleanオブジェクトはtrueを返します。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

値が省略されるか、0、-0、null、false、NaN、未定義、または空の文字列( "")の場合、オブジェクトの初期値はfalseです。

そう

if(Boolean(val))
 {
 // executable ... 
}
2
Yiding

私が知っているこのようなものへの唯一のショートカットは

var val;
(val==null || val===false) ? false: true;
1
Joseph Marikle

以下のようにしてみてください

var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
    //your instruction
}

node-boolify を参照してください

0

Boolean(val)=== false。これは、値が間違っているかどうかを確認するのに役立ちました。

0
Brigette

を使用しますか?ずっときれいです。

var ? function_if_exists() : function_if_doesnt_exist();
0
Pedro Pereira