2010-12-01 15 views

Antwort

10

Wenn foo bereits definiert ist und als wahr ausgewertet, es setzt foo = foo, das heißt, es tut nichts.

Wenn foo definiert, aber das Ergebnis falsch wäre es Popup was foo ist (false, null, undefined, leere Zeichenkette, 0, NaN), aber da alert nichts zurückkehrt, wird foo-undefined eingestellt werden.

Wenn foo noch nicht definiert ist, wird eine Ausnahme ausgelöst. (Edit: In Ihrem Beispiel wird foo immer wegen der var foo Deklaration definiert.)

4

foo Wenn das Ergebnis falsch (beispielsweise falsch, null oder Null) ist, der Wert nach den || Bediener wird auch bewertet, und zeigt den Wert.

Die Methode alert gibt keinen Wert zurück, daher wird foo undefiniert, wenn sie auf false ausgewertet wird, andernfalls wird ihr eigener Wert zugewiesen.

+0

Ist es nicht zugewiesen? Es ist ein rvalue – Hogan

+0

@Hogan: Ja, es ist zugewiesen. – Guffa

+0

'alert (foo)' gibt undefined zurück. –

3
var foo; 

if (foo) 
    foo = foo; 
else 
    foo = alert(foo); // probably undefined 
+1

@Hogan:> * Alarm (foo); ist ein L-Wert, kein R-Wert *. Was? –

+0

@Crescent: Nevermind - C-Begriff, der hier nicht gilt. – Hogan

Verwandte Themen