Hodnoty dokončení v JavaScriptu

Paul Irish před chvílí tweetoval úryvek kódu, který ho (a mě) zmátl.

> "omg"; var x = 4;
// "omg"

> eval( `"omg"; var x = 4;` );
// "omg"

Oba jsme očekávali, že "návratová hodnota" těchto řádků bude undefined . Ukazuje se, že to, co vidíme po vyhodnocení těchto řádků v konzole JavaScriptu, nejsou návratové hodnoty, ale spíše hodnoty dokončení příkazu. Pokud se chcete v tomto tématu ponořit hlouběji, Matt Zeunert mě osvítil svým článkem.