web-dev-qa-db-ja.com

変数がfalseであり、trueまたはundefinedでないことを確認します

myvar javascript _variable === false_かどうかを確認する最良の方法は何ですか(同様に未定義かもしれません)。

_if (myvar === false)
_

うまくいきますが、myvarは未定義かもしれません。 false値のみが許容され、未定義ではありません。

if (typeof myvar !== "undefined" && myvar === false)より短いですか?

18
Haradzieniec

変数が宣言済みの場合:

if (myvar === false) {

正常に動作します。 ===は、falseが未定義であるとは見なしません。

undefinedand未宣言の場合は、使用する前にその型を確認する必要があります(そうしないと、参照エラーが発生します)。

if(typeof myvar === 'boolean' && myvar === false) {

ただし、変数を使用しようとする場合は、必ず変数を宣言する必要があります。

var myvar;
// ...
// some code that may or may not assign a value to myvar
// ...
if (myvar === false) {
28
Quentin
if(typeof myvar === 'boolean' && !myvar)

if (myvar !== undefined && myvar === false)はどうですか?

1
bvx89

Nodejsでは node-boolify を使用して可能です

var Boolify = require('node-boolify').Boolify;
if (Boolify(myVar) == false) {
    //Instructions when satisfy
} else {
    //Instructions when not satisfy
}

ブール変換結果

Boolify(true); //true
Boolify('true'); //true
Boolify('TRUE'); //null
Boolify(1); //true
Boolify(2); //null
Boolify(false); //false
Boolify('false'); //false
Boolify('FALSE'); //null
Boolify(0); //false
Boolify(null); //null
Boolify(undefined); //null
Boolify(); //null
Boolify(''); //null
0

偽のケース をチェックする場合、

if(myVar) {
  // Your conditional code here.....
}

動作するはずです。ただし、その場合はゼロ(0)、空の文字列("")または非数(NaN)も偽物と見なされます。

0