Соответствует ли следующий код стандартам (строго / небрежно)?Он действует аналогично IIFE, но, возможно, читаемость улучшилась ИМХО:
try { throw function (){} } catch(foo) { foo(); }
Я не знаю о выступлениях.
Да.Вы можете бросить любое значение, включая ссылку на функцию.То, что вы бросаете, не обязательно должно быть ошибкой (хотя это лучшая практика).
В спецификации вы можете видеть, что throw принимает любое выражение , что может привести к любому значению, и catch точно предоставит выброшенное значение.
throw
catch