Для лучшего понимания мы можем расширить его до:
const _sum2 = function() { // anonymous function
return function sum(x,y,z){
return (x+y+z);
};
}
const sum = _sum2(); // value of _sum2 returns
// it is the same as
const sum = function sum(x,y,z){
return (x+y+z);
}
console.log(sum(1,2,3));
Проверьте сами:
const sum = (function() {
return function sum(x,y,z){
return (x+y+z);
};
})();
console.log('const sum = ' + sum.toString());
такой синтаксис используется для защиты промежуточных значений и функций. В вашем случае таких переменных нет, но:
const sum = (function() {
const n = 10;
function protected() {
return n;
}
return function sum(x,y,z){
return protected() * (x+y+z);
};
})();
console.log(sum(1,2,3)); // evaluates to 60
функция protected
и переменная n
запечатаны и не подвержены воздействию вашей глобальной среды.