2017-05-20 1 views
0

Die Chrome-Konsole meldet dies, wenn b = a || 1 aufgerufen wird.Tranary-Ausdruck kann keine undefinierte Variable auswerten

b = a || 1 
Uncaught ReferenceError: a is not defined 
    at <anonymous>:1:5 

Wenn I der Wert von b zu erwarten sollte 1.

auch sein:

x.push(a?'a':1) 
Uncaught ReferenceError: a is not defined 
    at <anonymous>:1:8 

Wenn I 1 erwartet, zu dem Array x geschoben werden.

Kann jemand bitte erklären, wie man undefinierten Wert mit etwas Syntaxzucker ignoriert? thx

+0

Der Fehler für mich klar ist, wird, da ein nicht definiert. Sie können überprüfen, ob ein Fenster vorhanden ist oder ob das Objekt wie folgt aussehen soll: b = Fenster ['a'] || 1 ' –

+0

können Sie Ihren vollständigen Code veröffentlichen? das Problem ist nicht mit Ihrer ternären Operation. Es ist, dass "a" keinen Wert hat, also stürzt es ab, bevor die ternäre Operation ausgeführt wird. – altoids

Antwort

1

Die Variable a existiert nicht. Sie müssen die Variable deklarieren, bevor Sie sie in einem Ausdruck verwenden können. Sie müssen ihm jedoch nichts zuweisen, denn sobald es deklariert ist, wird es standardmäßig undefined (und wird daher im Ausdruck falsy sein), was ich denke, das Verhalten, das Sie erwartet haben.

var a; 
 
b = a || 1; 
 
console.log('b is: ' + b);