Колбэки и функции высшего порядка. Фундаментальный JavaScript
HTML-код
- Опубликовано: 26 сен 2024
- Что такое функция высшего порядка и что такое колбэк, он же функция обратного вызова. Разбираемся на простых примерах и пытаемся ухватить саму идею.
Колбэки - это функции, которые передаются другим функциям или методам в качестве аргумента.
Функции высшего порядка - это функции, которые либо принимают другую функцию в качестве аргумента, либо возвращают новую функцию в результате вызова.
_ _
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Заказать консультацию можно здесь pcgramota.com/...
Если не знаете что такое коллбеки, то это лучшее видео. Спасибо вам Михаил!
Есть такая фраза, если вы чего-то ещё не знаете, значит оно вам и не нужно
Спасибо за понятное объяснение! Почему везде так сложно объясняют, с такими заумными для меня примерами и терминами? Ну да, я чайник. Но если бы я понимала их термины, я бы и про callback уже знала. и не рылась в инете в поисках информации. Еще раз спасибо за то, что простым языком объяснили суть callback.
Господи, это лучшее объяснение колбэка, которое я видела! Спасибо!
Спасибо Вам. Вы единственный человек, который всё понятно объяснил. 👌👌👌
Как успехи в обучении?)
Неудержался что бы не написать комментарий. Очень ясный ум, ясное понимание темы и такое же прозрачное объяснение. Жаль, что больше ничего не публикуете. Спасибо!
Спасибо за похвалу.
Видео публикую почти каждую неделю. Темы разные. На этой неделе по JS. Только плейлист другой.
Михаил, спасибо за этот плейлист)) очень нравится ваша манера рассказывать просто и точно про сложные для меня вещи)
Хорошее объяснение👍
Михаил, спасибо большое Вам! Это тот курс, который мне был необходим. После него намного легче стало формировать логику в решении задач. Круто!
главное, я применял в работе hoc - но только сейчас понял, что это они и были)
и еще реально интересное замечание, что методы работы с массивами по сути тоже hoc
Коротко и яснооооооо!
Спасибо за обьяснение. Кстати первые две функции были примером "Чистых функций". Так что видео охватывает тему чистых функций и функций высшего порядка
Все прекрасно!
Зашел после книги "Выразительный Javascript " 3 издание. Два дня пытался вдумчиво прочитать что же там написано в главе про функции высшего порядка. В итоге за 14 минут объяснили здесь. Спасибо огромное!
+++ ахахах
Благодарю! Очень круто объяснили!!!
Спасибо за видео ❤
Гениально! У вас талант объяснять
Большое спасибо!
Наконец-то простым языком объяснили и я понял, что же такое колбэк :)
Комент в поддержку канала 🙏
спасибо, тебе. это самое доступное объяснение, что такое колбек. а до этого никак не мог понять.
на мой взгляд, стоит добавить, что в JS функция это не просто метод, как например в Java, а объект.
я долго не мог понять колбеки, т.к. думал, что в качестве параметра выступает результат работы функции, а не она сама.
ещё раз спасибо.
отл урок. Доходчиво обьясняешь. Спасибо.
Спасибо. Очень ясно и понятно обьясняете!
Круто, спасибо, все очень понятно!
Отличное видео ! Многое прояснило !!!
все сразу стало так понятно, спасибо!!
Спасибо за урок
вначале был реализован метод map возвращающий измененный массив) очень крутое и логичное объяснение! спасибо!
объяснение прекрасное!
О боги, спасибо за такого инструктора ) очень доходчиво и понятно. Не хватило только 2-3-этажного колбека для рассмотра
2-3 этажа - прошлый век. Уже ведь есть промиссы, а в es7 ввели async/await.
Промисы и асинхронные функции тоже со временем рассмотрим на канале.
Даа, спасибо! Не зря подписался. Коротко и по делу.
Прекрасно объяснили, спасибо большое!
Спасибо за урок!
Круто!
const myArr = [2, 3, 4];
function elements(el) {
return el * 2;
}
console.log(myArr.map(elements));
вот этот код тоже будет считаться как колбэк функция? Как я понял метод тоже функция и я передаю функцию "elements" как аргумент в метод .map()
👍
Спасибо толково объясняете. Как совет, опять же хотя кому как, подумайте может немного ускорить подачу материала, смортю вас на 1.75 и параллельно код успеваю писать, может тогда просмотры увеличаться. Удачи!
Я весь RUclips на двушке смотрю)) при этом мне люди порой пишут, что я для них слишком быстро говорю) но я в любом случае экспериментирую. Спасибо.
@@mishanep нормальная скорость, Михаил. Отличная! Кто хочет, тот ускорит. Я смотрю вас на обычной скорости и получаю удовольствие. Так как параллельно в голове прокручиваю необходимые мне сопутствующие мысли и сценарии.
Быстрота в подаче раздражает - превращаешься в ведро, куда сливают инфу.
Изучая что-то новое, у человека должно оставаться время на обдумывание параллельно тому, что говорит лектор.
Если же смотришь, чтобы что-то обновить в голове, увеличиваешь скорость. И все довольны.
вау !
оч качественно
просто и точно про сложные вещи , спасибо
Здравствуйте, спасибо большое за Ваше видео, все доходчиво и понятно. Мне как новичку было все ясно. но я только одного не поняла: откуда берётся аргумент num? возможно, глупый вопрос и Вы вряд ли заметите, но я просто что-то упустила из виду это...
Какой таймкод? Я не помню своих видео наизусть :)
@@mishanep вот к примеру 11:00 , function numSquared, её параметр num, но откуда она берет этот аргумент? я этого немного не поняла
@@yutbchannel numSquared как и любая другая функция будет рассматриваться внутри copyArrayAndDoSmth по именем instructions. Поэтому когда идет вызов instructions(arr[i]), то вызывается переданный колбэек, в данном случае numSquared и ему передается значение arr[i], которое принимает параметр num
@@mishanep поняла, спасибо большое!
Спасибо за видео! Но одно для меня остается непонятным, почему Вы называете сущность, являющуюся по сути просто делегатом, callback-функцией? Ведь "издревна" callback-функция - это функция назначение которой быть выполненной по завершении работы другой функции в которую она и передана для этого. И название у нее соответствующее. Либо это так принято в JS? Странно...
Думаю вы правы, отчасти здесь действительно смешиваются два понятия. Но в среде JavaScript, насколько я встречаю, и то и другое называется колбэком.
Здорово объясняешь! Но!
1. ESLint ругается на i++ (например airbnb)
2. Каждую итерацию цикла, вычислять .length не круто. По-хорошему ее надо перед циклом записать в переменную.
3. Почему не использовал map вместо цикла?
1. airbnb - жесткий, мы на работе от него отказались, используем конфиг гугла (насколько помню у него к i++ претензий не было).
2. Length - насколько я его понимаю, это кэшированное свойство, которое автоматически меняется при изменении длины массива и не требует перерасчета при обращении к нему.
3. Map не спользовался как раз потому, что он уже принимает колбэк, а в видео мы разбирали само понятие.
@@mishanep 3. Цикл, окей, но почему тогда не "for of"? Более современный и лаконичный синтаксис.
@@olegsoul6016 странные вопросы вы задаете :) для сути видео что-то принципиально от этого изменилось бы?
@@mishanep Хм, я бы тогда сказал - странный ответ ваш на мой вопрос)) Раз все равно что использовать, для чего вы тогда показываете современные методы, что отличает их от более старых (кстати в том же самом примере в цикле вы почему-то использовали для возведения в степень метод из ES6, а не Math.pow()...)? И, мне казалось, отвечать вопросом на вопрос, не очень культурно...сори, если чем-то задел вас, я просто хотел разобраться в вашей логике подачи материала.
@@olegsoul6016 не вижу смысла вступать в прения. На мой взгляд для логики изложения конкретного видео не было никакой разницы. Возможно и был какой-то умысел, когда готовился материал для видео, но спустя два месяца после публикации об этом уже сложно что-то сказать.
А как элементы массива автоматически идут в nam?
Элементы массива не "идут автоматически в num". Смотрите на функции numSquared и divideBy2 как на формулы, которые мы вкладываем в функцию copyArrayAndDoSmth в качестве аргументов при её вызове. Эти аргументы (формулы) заменяют параметр instructions в теле функции copyArrayAndDoSmth. С помощью этого параметра (instructions) мы производим соответствующие вычисления над числами, которые стоят первым аргументом функции copyArrayAndDoSmth.
@@im_dmitriy добрый день. А можно ли таким способом вывести четные/нечетные числа. Я попытался, он лишь проверяет их, выводит true или false
@@ОлегД-э2ъ добрый... Попробуйте таким образом:
function getOddNum(num) {
if (num % 2 !== 0) {
return num;
} else {
return false;
}
}
@@ОлегД-э2ъ Предлагаю сперва показать свой вариант : )
@@ОлегД-э2ъ Интересное решение. Вместо простенького else if такая хитрая штука : )
Спасибо !
Отличное объяснение !
А когда замыкания рассмотрите?
Давно уже есть на канале ruclips.net/video/BOjr2L3VXsc/видео.html