2012-04-06 8 views
2

wennweiter mit/Pause innerhalb boolean Anweisung [V8]

true && (function() { console.log('executed'); })() 

in Ordnung ist, warum dann

true && continue; 

oder

true && (continue); 

nicht funktioniert, z.B. V8 (Node) wirft:

SyntaxError: Unexpected token continue 
+0

Was würde jemals eine Verwendung dafür sein? Continue wird verwendet, um früh aus einer Schleife auszusteigen. Es ist kein boolescher Wert – jzworkman

+0

[hier] (https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/conditionals.html) siehe Zeile 125 – jakubmal

+0

Dieses Beispiel ist völlig anders als die Verwendung von 'continue '. Obwohl es immer noch eine Anweisung ist und nicht wie unten beschrieben verwendet werden kann, würde die Verwendung von continue innerhalb einer booleschen Anweisung nie ausgeführt werden, nur um herauszufinden, warum Sie das als Beispiel verwendet haben, anstatt 'true && result ++' zu verwenden, was Ihr echtes Beispiel war . – jzworkman

Antwort

2

In JavaScript gibt es Ausdrücke und Anweisungen. Anweisungen können Ausdrücke enthalten, aber nicht umgekehrt. Die Anweisung true && false; ist eine Ausdruckanweisung.

&& erwartet zwei Ausdrücke.

Sowohl true und (function() { ... })() sind Ausdrücke - ein boolean Ausdruck true Auswertung und eine Funktion Ausdruck (in Klammern eingewickelt und dann genannt) zu undefined auswertet.

continue ist eine Anweisung, so dass Sie && nicht verwenden können. Sie müssen if verwenden, da if eine Anweisung akzeptiert, die ausgeführt wird, wenn die Bedingung wahr ist.

Es ist korrektes Verhalten entsprechend der Spezifikation und sollte nicht V8-spezifisch sein.

+0

irgendeine nette Weise, es zu wickeln? – jakubmal

+0

@jakubmal: Was meinst du? 'if (true) continue;' funktioniert und ist nicht viel mehr Code. – pimvdb

+0

Meh, ich weiß, das ist zum Spaß, noch, 'true && (weiter, 1)' funktioniert nicht – jakubmal

0

Da continue nicht Ausdruck ist, der einen Wert zurückgeben. Der vollständige boolesche Ausdruck sowie seine Teile müssen einen gewissen Wert zurückgeben.

Verwandte Themen