Und wie holt sich denn das
do
den Wert, wenn einif
oder das im Eingangsbeispiel gezeigteswitch
(weiterhin) nichts zurückgibt? Irgendwie muss doch diese Funktionalität auch in die bestehenden Statements eingebaut werden, oder nicht?
Statements haben in JavaScript schon heute Rückgabewerte, allein die Syntax-Regeln halten uns davon ab mit diesen Rückgabenwerten weiterzurechnen: Man kann den Rückgabewert nicht in Variablen speichern, weil auf der rechten Seite von Zuweisungen unmal keine Statements erlaubt sind. Mit eval
kann man das allerdings simulieren:
x = eval('if (true) 1; else 0;');
console.assert(x === 1);
Das Proposal zu do-Expression stützt sich auch auf diese Semantik.