Потому что объявление функции не может быть вызвано напрямую, поэтому (...)
после того, как оно проанализировано как отдельный оператор.
Вы никогда не заканчиваете объявление переменной, содержащее выражение функции , ;
, поэтому следующие скобки являются вызовом функции:
let f = function() { /*...*/ }(/*...*/)(/*...*/);
TLDR: Always endоператоры с точкой с запятой.
let f = function() { /*...*/ }; // <<<