Разбирался как должны себя вести функции в ES6 в следующих случаях:
function f(x = g()) {…}
function f(x = function () {…}()) {…}
не нашел вменяемой информации, но вроде как этот блок с аргументами должен выполняться вместе с function body, но что интересно, наткнулся на название повсеместно применяемого приема:
(function () {
…
}());
(function () {
…
})();
!function () {
…
}();
new function () {
…
};
Immediately-invoked function expression (IIFE)
раньше только self-executing anonymous function встречал
------------------------------------------------
как-то я пропустил эту тему
Self-invoking функции 