Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 71

Анонимная функция

26.10.2018, 21:25. Показов 1542. Ответов 5

Студворк — интернет-сервис помощи студентам
Небольшой код с анонимной функцией. Скажите каким образом при выводе сообщения через alert к Hello добавляется Mike?
JavaScript
1
2
3
4
5
6
7
8
9
var myAlert = function(name) { 
  alert("Hello " + name); 
}
 
function helloMike(myFunc) {  
  myFunc("Mike");         
} 
 
helloMike(myAlert);
Что здесь происходит?
1) Вначале переменная myAlert получает результат вызова анонимной функции или она просто получает имя функции, превращаясь с анонимной в именную? То есть эта анонимная функция делается такой в результате после присвоения ее переменной?
JavaScript
1
2
3
function myAlert(name) { 
  alert("Hello " + name); 
}
2) После этой строки кода helloMike(myAlert);
Анонимная функция которая превратилась в именную функцию передается в качестве параметра функции helloMike
и строка myFunc("Mike"); заменяется после передачи функции в качестве параметра на эту строку helloMike(myAlert)?

3) Каким образом происходит объединение Hello c Mike?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2018, 21:25
Ответы с готовыми решениями:

Не работает анонимная функция
Добрый вечер, господа! Делаю простенькие задания на JS и на одном из них встал в ступор при использовании анонимной функции ...

Анонимная самовызывающаяся функция
Почему анонимную функцию нельзя вызвать без круглых скобок? Нет ошибок: (function(){ //do something })(); Ошибка: ...

Анонимная функция нахождения произвидения 2 чисел
Задание: Анонимная функция нахождения произвидения 2 чисел. Пытался сделать самостоятельно нечего адекватного не вышло...

5
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
26.10.2018, 21:53
Цитата Сообщение от usa-1450 Посмотреть сообщение
Вначале переменная myAlert получает результат вызова анонимной функции
нет,там нет никакого вызова, а есть определение функции. Вызов функции это оператор () после ее имени.
Цитата Сообщение от usa-1450 Посмотреть сообщение
превращаясь с анонимной в именную?
типа того. Эту функцию теперь можно вызывать,обращаясь к переменной myAlert, например:
JavaScript
1
myAlert('John');//всплывёт алерт Hello John
Цитата Сообщение от usa-1450 Посмотреть сообщение
После этой строки кода helloMike(myAlert);
не после,а внутри нее всё и происходит:
1.Вызывается функция helloMike, которая получает в качестве аргумента функцию myAlert,
2. в свою очередь myAlert получает аргумент "Mike", как это прописано в строке 6, и вызывает alert("Hello " + name); подставляя вместо name свой аргумент "Mike"
1
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 71
26.10.2018, 22:59  [ТС]
Если написать вот так:
JavaScript
1
myAlert('John');
Результат вывода будет : Hello John

Смущает вот эта строка:
JavaScript
1
myFunc("Mike");
здесь получается myFunc("Mike") меняется на myAlert('Mike'); ?
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
26.10.2018, 23:56
Цитата Сообщение от usa-1450 Посмотреть сообщение
здесь получается myFunc("Mike") меняется на myAlert('Mike');
Нет, там ничего не меняется. helloMike всего лишь вызывает внутри себя другую функцию, которую ей передали аргументом (myAlert), вот и все)

Если вас смущает объявление ф-ции через var, то замените ее на привычное объявление - результат не изменится:
JavaScript
1
2
3
4
5
6
7
8
9
function myAlert(name) { 
alert("Hello " + name); 
} 
 
function helloMike(myFunc) {  // аргумент - функция
myFunc("Mike"); // вызов функции с передачей в нее аргумента
} 
 
helloMike(myAlert);
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 71
27.10.2018, 00:06  [ТС]
helloMike всего лишь вызывает внутри себя другую функцию, которую ей передали аргументом (myAlert)
Каким образом я вызываю несуществующую функцию с именем myFunc("Mike")? Он определяется после того когда получает в качестве аргумента другую функцию с именем myAlert?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
27.10.2018, 01:01
Лучший ответ Сообщение было отмечено usa-1450 как решение

Решение

usa-1450, давайте попробуем "на пальцах" и примитивным языком. Возьмём пример msheal.
Попробуйте мысленно пройти по шагам:
После вызова функции helloMike:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Реальный код функции
function helloMike(myFunc) {
  myFunc("Mike");
}
 
// В переменную myFunc попадает myAlert. Заменим для наглядности
function helloMike(myAlert) {
  myFunc("Mike");
}
 
// Продолжаем заменять все myFunc в теле функции
// и в итоге получаем следующее
function helloMike(myAlert) {
  myAlert("Mike");  // вот тут, я надеюсь, пасьянс должен сойтись
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2018, 01:01
Помогаю со студенческими работами здесь

Что такое Анонимная Функция, где используется?
Здравствуйте. Расскажите, пожалуйста, что такое анонимная функция, для чего она нужна, и как она используется на практике. А так же,...

Не срабатывает анонимная функция
Добрый день! Подскажите, пожалуйста, почему текст 'connect' в данном случае виден, а 'inner connect' нет? public function...

Анонимная функция и замыкание
Привет всем. Поясните пожалуйста верно ли я понял. Вот есть анонимная функция(онаже Лямбда-функци) с помощью которой делаем замыкание...

Анонимная функция в интегрировании
Здравствуйте, гуглил способы интегрирования в Matlab и наткнулся на функцию для числового интегрирования quadl. Для примера представлен...

Анонимная функция, вернуть 2 параметра
Доброго времени! Подскажите, конструкцию как можно используя анонимную функцию @() или inline вернуть 2 и более параметров?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru