Почему alert, вызванный без аргументов, показывает результат?

Всем привет!

Есть промис с обработчиком .then, который выводит диалоговое окно с fulfilled-результатом:

let promise = new Promise(resolve => resolve('Done!')).then(result => alert(result)) // Done!

Метод .then принимает в качестве аргумента стрелочную функцию. В стрелочную функцию в качестве аргумента, в свою очередь, мы передаем result — значение, с которым промис был успешно выполнен.

А теперь слегка изменим код в части метода .then:

let promise = new Promise(resolve => resolve('Done!')).then(alert) // Done!

Сейчас в метод .then мы передали только функцию alert, но при этом в обоих случаях мы получаем одинаковый результат — вывод диалогового окна с сообщением «Done!».

Почему во втором случае в методе .then мы, не передав в alert аргумент в виде result, все равно получили его вывод? Метод .then каким-то образом скрыто передает этот аргумент в функцию? Или как работает эта магия?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Вы в then в любом случае передаёте функцию.
В первом случае, эта функция:
result => alert(result)
Во втором просто:
alert

Проще пронять на переменных, мне кажется. Если вы функцию из первого примера передадите в переменную и скормите then всё точно так же сработает:
const func = result => alert(result);
let promise = new Promise(resolve => resolve('Done!')).then(func) //Выполнится func

Смысл в том, что во всех трёх случаях вы передаёте аргументом в then функцию которая принимает 1 аргумент (результат) и что-то с ним делает: передаёт в alert или выводит диалоговое окно сразу, разницы нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы