Колбэки и функции высшего порядка. Фундаментальный JavaScript
Vložit
- čas přidán 12. 10. 2020
- Что такое функция высшего порядка и что такое колбэк, он же функция обратного вызова. Разбираемся на простых примерах и пытаемся ухватить саму идею.
Колбэки - это функции, которые передаются другим функциям или методам в качестве аргумента.
Функции высшего порядка - это функции, которые либо принимают другую функцию в качестве аргумента, либо возвращают новую функцию в результате вызова.
_ _
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Заказать консультацию можно здесь pcgramota.com/courses/konsult...
Если не знаете что такое коллбеки, то это лучшее видео. Спасибо вам Михаил!
Господи, это лучшее объяснение колбэка, которое я видела! Спасибо!
Спасибо за понятное объяснение! Почему везде так сложно объясняют, с такими заумными для меня примерами и терминами? Ну да, я чайник. Но если бы я понимала их термины, я бы и про callback уже знала. и не рылась в инете в поисках информации. Еще раз спасибо за то, что простым языком объяснили суть callback.
Спасибо Вам. Вы единственный человек, который всё понятно объяснил. 👌👌👌
Как успехи в обучении?)
главное, я применял в работе hoc - но только сейчас понял, что это они и были)
и еще реально интересное замечание, что методы работы с массивами по сути тоже hoc
Коротко и яснооооооо!
Комент в поддержку канала 🙏
Хорошее объяснение👍
Неудержался что бы не написать комментарий. Очень ясный ум, ясное понимание темы и такое же прозрачное объяснение. Жаль, что больше ничего не публикуете. Спасибо!
Спасибо за похвалу.
Видео публикую почти каждую неделю. Темы разные. На этой неделе по JS. Только плейлист другой.
Хорошо , когда обьясняют постепенно по пунктам.
просто и точно про сложные вещи , спасибо
Все прекрасно!
Михаил, спасибо за этот плейлист)) очень нравится ваша манера рассказывать просто и точно про сложные для меня вещи)
Гениально! У вас талант объяснять
Наконец-то простым языком объяснили и я понял, что же такое колбэк :)
Спасибо за урок!
Спасибо за видео ❤
Круто, спасибо, все очень понятно!
Михаил, спасибо большое Вам! Это тот курс, который мне был необходим. После него намного легче стало формировать логику в решении задач. Круто!
Благодарю! Очень круто объяснили!!!
Большое спасибо!
вначале был реализован метод map возвращающий измененный массив) очень крутое и логичное объяснение! спасибо!
отл урок. Доходчиво обьясняешь. Спасибо.
Отличное видео ! Многое прояснило !!!
Спасибо за урок
Спасибо за обьяснение. Кстати первые две функции были примером "Чистых функций". Так что видео охватывает тему чистых функций и функций высшего порядка
все сразу стало так понятно, спасибо!!
Зашел после книги "Выразительный Javascript " 3 издание. Два дня пытался вдумчиво прочитать что же там написано в главе про функции высшего порядка. В итоге за 14 минут объяснили здесь. Спасибо огромное!
+++ ахахах
Отличное объяснение !
Прекрасно объяснили, спасибо большое!
объяснение прекрасное!
Спасибо. Очень ясно и понятно обьясняете!
Спасибо !
Круто!
const myArr = [2, 3, 4];
function elements(el) {
return el * 2;
}
console.log(myArr.map(elements));
вот этот код тоже будет считаться как колбэк функция? Как я понял метод тоже функция и я передаю функцию "elements" как аргумент в метод .map()
О боги, спасибо за такого инструктора ) очень доходчиво и понятно. Не хватило только 2-3-этажного колбека для рассмотра
2-3 этажа - прошлый век. Уже ведь есть промиссы, а в es7 ввели async/await.
Промисы и асинхронные функции тоже со временем рассмотрим на канале.
оч качественно
👍
Спасибо толково объясняете. Как совет, опять же хотя кому как, подумайте может немного ускорить подачу материала, смортю вас на 1.75 и параллельно код успеваю писать, может тогда просмотры увеличаться. Удачи!
Я весь CZcams на двушке смотрю)) при этом мне люди порой пишут, что я для них слишком быстро говорю) но я в любом случае экспериментирую. Спасибо.
@@mishanep нормальная скорость, Михаил. Отличная! Кто хочет, тот ускорит. Я смотрю вас на обычной скорости и получаю удовольствие. Так как параллельно в голове прокручиваю необходимые мне сопутствующие мысли и сценарии.
Быстрота в подаче раздражает - превращаешься в ведро, куда сливают инфу.
Изучая что-то новое, у человека должно оставаться время на обдумывание параллельно тому, что говорит лектор.
Если же смотришь, чтобы что-то обновить в голове, увеличиваешь скорость. И все довольны.
вау !
Здравствуйте, спасибо большое за Ваше видео, все доходчиво и понятно. Мне как новичку было все ясно. но я только одного не поняла: откуда берётся аргумент num? возможно, глупый вопрос и Вы вряд ли заметите, но я просто что-то упустила из виду это...
Какой таймкод? Я не помню своих видео наизусть :)
@@mishanep вот к примеру 11:00 , function numSquared, её параметр num, но откуда она берет этот аргумент? я этого немного не поняла
@@ijambookvia 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.
@@dmitry7417 добрый день. А можно ли таким способом вывести четные/нечетные числа. Я попытался, он лишь проверяет их, выводит true или false
@@user-zj3ox1oh6n добрый... Попробуйте таким образом:
function getOddNum(num) {
if (num % 2 !== 0) {
return num;
} else {
return false;
}
}
@@user-zj3ox1oh6n Предлагаю сперва показать свой вариант : )
@@user-zj3ox1oh6n Интересное решение. Вместо простенького else if такая хитрая штука : )
А когда замыкания рассмотрите?
Давно уже есть на канале czcams.com/video/BOjr2L3VXsc/video.html