Die Frage ist ein wenig veraltet, aber ich denke, die Antworten alle verpassen eine wichtige Unterscheidung. Das heißt, eine while
Schleife erwartet einen Ausdruck, der zu einem Konditional, d. H. Einem booleschen Wert oder einem Wert, der in einen booleschen Wert umgewandelt werden kann, auswertet. Einzelheiten finden Sie unter Mozilla docs.
Eine reine Zuweisung (ohne Instanziierung) wird über ihren Standard-Rückgabewert (den Wert der rechten Seite) in einen Booleschen Wert umgewandelt.
A var
(oder let
oder const
) ist eine Anweisung die eine optionale Zuordnung ermöglicht aber einen Rückgabewert von undefined
hat.
Sie können dies leicht in der Konsole testen:
var foo = 42; // undefined
bar = 42 // 42
Die Rückkehr allein Werte die Frage nicht beantworten, da undefined
Falsey ist, aber zeigt, dass selbst wenn JS lassen Sie eine var
in ein setzen bedingt würde es einfach immer zu falsch auswerten.
Andere haben for
Anweisungen erwähnt und ermöglichen die Deklaration und Instanziierung von Variablen. Dies ist richtig, aber die documentation explains, dass for
erwartet eine Aussage oder Zuordnung.
Meinungen können variieren, aber für mich ergibt das alles eine verständliche Konsistenz, keine Eigenart im Verhalten in Bezug auf Schleifen.Eine while
Schleife ist besser als eine Looping-Version einer if
-Anweisung gedacht als eine for
Schleife. Wenn es in all dem Schrulligkeit gibt, ist es die Großhandelsabweichung der for
Anweisung von der normalen Syntax der Sprache.
Die 2 unten erklären das Heben von Variablendeklarationen, erklären aber nicht, warum Sie keine Variable innerhalb einer 'while'-Bedingung deklarieren können (aber Sie können z. B. in einer' for'-Bedingung). Hast du jemals eine gute Erklärung dafür gefunden? – Barney
Eine andere JS-Quirk, deshalb. –