Когда я выполняю это выражение в Javascript REPL (консоль или узел браузера)
if(false) {4} else {5}
он возвращает 5
но я не понимаю, почему.
if
ничего не возвращает, например, я не могу:
var foo = if(false) {4} else {5}
Итак, почему REPL возвращает значение?
Верно, что if
утверждения являются утверждениями и не имеют "значения". В обычном JS-скрипте ничего не произойдет, if(false) {4} else {5}
будет оценено if(false) {4} else {5}
.
Какие консоли обычно дают вам в качестве возвращаемого значения значение последнего оцениваемого выражения.
В вашем случае 5
оценивается и возвращается.