it-swarm.com.de

JavaScript-Prüfung, wenn value nur undefined, null oder false ist

Gibt es neben dem Erstellen einer Funktion einen kürzeren Weg, um zu prüfen, ob ein Wert nur in JavaScript undefined, null oder false ist?

Die folgende if-Anweisung ist äquivalent zu if(val===null && val===undefined val===false) Der Code funktioniert gut, ich suche nach einem kürzeren Äquivalent.

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

Vor val==null wird sowohl bei val=undefined als auch val=null der Wert true ausgewertet.

Ich dachte, vielleicht mit bitweisen Operatoren oder einem anderen Trick.

36
William A

Nun, du kannst immer "aufgeben" :)

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

Der beste Weg, das zu tun, denke ich, ist: 

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

Dies ist wahr, wenn val falsch, NaN oder nicht definiert ist. 

12
David Hoffman

Eine Möglichkeit, dies zu tun, ist so:

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

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

Ich denke, es minimiert die Anzahl der Operationen aufgrund Ihrer Einschränkungen und macht die Prüfung schnell.

2
Eugene Lazutkin

Ich denke, was Sie suchen, ist!!val==false, das in!val(noch kürzer) umgewandelt werden kann:

Sie sehen:

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

Das funktioniert, indem Sie den Wert mithilfe des !-Operators umkehren.

Wenn Sie null einmal so umdrehen wie folgt: 

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

Wenn Sie es zweimal umdrehen:

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

Gleich mit undefined oder false.

Dein Code:

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

würde dann werden:

if(!val) {
  ;
}

Das würde in allen Fällen funktionieren, auch wenn es eine Zeichenfolge gibt, deren Länge jedoch gleich null ist. Wenn nun auch die Nummer 0 verwendet werden soll (was false wäre, wenn sie doppelt gespiegelt würde), dann würde Ihr wenn:

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

Eine andere Lösung:

Basierend auf dem Dokument gibt das boolesche Objekt den Wert true zurück, wenn der Wert nicht 0, undefined, null usw. ist. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

Wenn value nicht angegeben wird oder 0, -0, null, false, NaN, undefined oder die leere Zeichenfolge ("") ist, hat das Objekt den Anfangswert false. 

So

if (Boolean (val)) 
 {
 // ausführbare Datei ...
}
1
Yiding

nur eine Abkürzung für so etwas, das ich kenne, ist 

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

Versuchen Sie es wie unten

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

node-boolify

0

Boolean (val) === false. Dies funktionierte für mich, um zu überprüfen, ob der Wert falsch war. 

0
Brigette

Mit? ist viel sauberer.

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