Допустим, у меня есть функция, которая принимает на вход функцию и число, и возвращает значение, измененное входной функцией. const myFunc=(func,now)=>{return func(now)} // функция func принимает в аргументы now и возвращает значение. myFunc((now)=>{return now*10}, 10) // вызываем myFunc с первым аргументом-функцией и вторым аргументом - числом. Результат - 100.
Получается, в функции myFunc делается следующая вещь - (now)=>{return now*10}(10);
Но если посмотреть на результат вышестоящего вызова, то он даст ошибку. правильный вариант - ({return now*10})(10);
Почему переданная функция вызывается правильно, именно с оборачиванием функции в доп. скобки??
Немного не на тот вопрос ответили, я его лучше перефразирую:
Язык сам догадывается обернуть в скобки функцию (я выделил эти скобки жирным выше в примере)? Он сам догадывается, что это именно функция и следовательно ее надо обернуть скобками для корректного вызова?
yaroslav195, язык ничего не догадывается, в нем строго определенный набор конкретных конструкций.
Которым вы описываете что вы хотите чтобы было сделано.
И когда движок уже это делает, он не переписывает за вас программу - он делает то что сказано.
Если совсем по простому - то
Получается, в функции myFunc делается следующая вещь - (now)=>{return now*10}(10);
нет, не получается. в функции myFunc происходят совсем другие вещи.
Которые лично вы можете отдаленно представить как то что вы написали. А чтобы ваше представление было корректным и можно было это запустить (с похожим результатом но другими процессами), вам нужно добавить скобочки вокруг описания функции.