Und wie holt sich denn das
doden Wert, wenn einifoder 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.