2016-07-01 6 views
0

NodeJS (neueste).NodeJS/JavaScript if-Anweisung funktioniert nicht

Ich habe den folgenden Code. Warum funktioniert die erste IF-Anweisung nicht wie erwartet? Das Steuerelement geht nicht in die erste IF-Anweisung.

Ich sehe gültige console.log-Ausgabe für die erste Zeile im folgenden Code und erwartet, dass die erste IF-Anweisung seinen Code auch ausführen soll. Aber es tut es nicht; Die 2. IF-Anweisung funktioniert.

console.log("-- inside create IP() qData['osType'] is set to :: " + qData['osType']) 
    //-- 
    if (qData['osType'] == 'undefined') { 
    console.log("1 -- setting qData['osType'] = Linux by default for now. This should happen automatically.") 
    qData['osType'] = 'Linux' 
    console.log("1 -- inside create IP() if-statement-qData['osType'] and qData['osType'] is set to :: "+qData['osType']) 
    } 
    if (typeof qData['osType'] == 'undefined') { 
    console.log("2 -- setting qData['osType'] = Linux by default for now. This should happen automatically.") 
    qData['osType'] = 'Linux' 
    console.log("2 -- inside create IP() if-statement-qData['osType'] and qData['osType'] is set to :: "+qData['osType']) 
    } 
    qData['osType'] = 'Linux' 
    //-- 
+1

Es würde helfen, Ihr 'qData' Objekt sieht aus wie – Himmel

+0

um, weil' QDATA [ 'OSTYPE']! = (Typeof QDATA [ 'usType']) ' –

+0

Beachten Sie, dass dies nichts mit Knoten zu tun hat, zu wissen, was. js, das ist nur Standard-JS-Verhalten. – nnnnnn

Antwort

3

Wenn Sie für die Überprüfung sind undefiniert-ness Sie eines tun:

  • typeof foo === 'undefined'
  • foo === undefined
  • foo === void 0

Alles andere ist nicht wirklich (streng) auf einen undefinierten Wert prüfen (einschließlich Vergleich eines Wertes direkt mit die Zeichenfolge 'undefined').

+0

wusste nicht, ob === gültig war. Ich werde es versuchen. –

1

Ich denke qData['osType'] == 'undefined' muss neu schreiben, wie qData['osType'] == undefined

Mein lieben

if(!qData.osType) 
+0

Das ist nicht wirklich äquivalent, da diese Bedingung für andere Werte, einschließlich '0',' false' und '' '' 'wahr' ergibt. – mscdex

+0

Sogar '== undefiniert' wird auch dann wahr sein, wenn' qData.osType' 'null' ist. – nnnnnn

2

In Ihrem ersten prüfen, ob Anweisung, qData['osType']-undefined auswertet, aber Ihr Vergleich ist zu prüfen, ob undefined == "undefined". Das Zeichenfolgenliteral hat einen Wert und ist daher nicht gleich undefined.

In Ihrer zweiten if-Anweisung typeof qData['osType'] wertet die Zeichenfolge "undefined" aus, sodass der Ausdruck true auswertet und Ihr Codeblock ausgeführt wird.

+1

Schöne Erklärung. –

Verwandte Themen