Колбэки и функции высшего порядка. Фундаментальный JavaScript
Вставка
- Опубліковано 12 жов 2020
- Что такое функция высшего порядка и что такое колбэк, он же функция обратного вызова. Разбираемся на простых примерах и пытаемся ухватить саму идею.
Колбэки - это функции, которые передаются другим функциям или методам в качестве аргумента.
Функции высшего порядка - это функции, которые либо принимают другую функцию в качестве аргумента, либо возвращают новую функцию в результате вызова.
_ _
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Заказать консультацию можно здесь pcgramota.com/courses/konsult...
Если не знаете что такое коллбеки, то это лучшее видео. Спасибо вам Михаил!
Господи, это лучшее объяснение колбэка, которое я видела! Спасибо!
Спасибо за понятное объяснение! Почему везде так сложно объясняют, с такими заумными для меня примерами и терминами? Ну да, я чайник. Но если бы я понимала их термины, я бы и про callback уже знала. и не рылась в инете в поисках информации. Еще раз спасибо за то, что простым языком объяснили суть callback.
Спасибо Вам. Вы единственный человек, который всё понятно объяснил. 👌👌👌
Как успехи в обучении?)
Хорошее объяснение👍
просто и точно про сложные вещи , спасибо
Коротко и яснооооооо!
Спасибо за урок!
Хорошо , когда обьясняют постепенно по пунктам.
Все прекрасно!
Михаил, спасибо за этот плейлист)) очень нравится ваша манера рассказывать просто и точно про сложные для меня вещи)
главное, я применял в работе hoc - но только сейчас понял, что это они и были)
и еще реально интересное замечание, что методы работы с массивами по сути тоже hoc
Неудержался что бы не написать комментарий. Очень ясный ум, ясное понимание темы и такое же прозрачное объяснение. Жаль, что больше ничего не публикуете. Спасибо!
Спасибо за похвалу.
Видео публикую почти каждую неделю. Темы разные. На этой неделе по JS. Только плейлист другой.
Круто, спасибо, все очень понятно!
Спасибо за видео ❤
Комент в поддержку канала 🙏
Михаил, спасибо большое Вам! Это тот курс, который мне был необходим. После него намного легче стало формировать логику в решении задач. Круто!
Наконец-то простым языком объяснили и я понял, что же такое колбэк :)
Большое спасибо!
Благодарю! Очень круто объяснили!!!
отл урок. Доходчиво обьясняешь. Спасибо.
Гениально! У вас талант объяснять
Спасибо за обьяснение. Кстати первые две функции были примером "Чистых функций". Так что видео охватывает тему чистых функций и функций высшего порядка
Прекрасно объяснили, спасибо большое!
Отличное объяснение !
Спасибо. Очень ясно и понятно обьясняете!
все сразу стало так понятно, спасибо!!
объяснение прекрасное!
Спасибо за урок
вначале был реализован метод map возвращающий измененный массив) очень крутое и логичное объяснение! спасибо!
Отличное видео ! Многое прояснило !!!
Спасибо !
Зашел после книги "Выразительный Javascript " 3 издание. Два дня пытался вдумчиво прочитать что же там написано в главе про функции высшего порядка. В итоге за 14 минут объяснили здесь. Спасибо огромное!
+++ ахахах
Круто!
О боги, спасибо за такого инструктора ) очень доходчиво и понятно. Не хватило только 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 и параллельно код успеваю писать, может тогда просмотры увеличаться. Удачи!
Я весь UA-cam на двушке смотрю)) при этом мне люди порой пишут, что я для них слишком быстро говорю) но я в любом случае экспериментирую. Спасибо.
@@mishanep нормальная скорость, Михаил. Отличная! Кто хочет, тот ускорит. Я смотрю вас на обычной скорости и получаю удовольствие. Так как параллельно в голове прокручиваю необходимые мне сопутствующие мысли и сценарии.
Быстрота в подаче раздражает - превращаешься в ведро, куда сливают инфу.
Изучая что-то новое, у человека должно оставаться время на обдумывание параллельно тому, что говорит лектор.
Если же смотришь, чтобы что-то обновить в голове, увеличиваешь скорость. И все довольны.
Спасибо за видео! Но одно для меня остается непонятным, почему Вы называете сущность, являющуюся по сути просто делегатом, callback-функцией? Ведь "издревна" callback-функция - это функция назначение которой быть выполненной по завершении работы другой функции в которую она и передана для этого. И название у нее соответствующее. Либо это так принято в JS? Странно...
Думаю вы правы, отчасти здесь действительно смешиваются два понятия. Но в среде JavaScript, насколько я встречаю, и то и другое называется колбэком.
Здравствуйте, спасибо большое за Ваше видео, все доходчиво и понятно. Мне как новичку было все ясно. но я только одного не поняла: откуда берётся аргумент num? возможно, глупый вопрос и Вы вряд ли заметите, но я просто что-то упустила из виду это...
Какой таймкод? Я не помню своих видео наизусть :)
@@mishanep вот к примеру 11:00 , function numSquared, её параметр num, но откуда она берет этот аргумент? я этого немного не поняла
@@ijambookvia numSquared как и любая другая функция будет рассматриваться внутри copyArrayAndDoSmth по именем instructions. Поэтому когда идет вызов instructions(arr[i]), то вызывается переданный колбэек, в данном случае numSquared и ему передается значение arr[i], которое принимает параметр num
@@mishanep поняла, спасибо большое!
Здорово объясняешь! Но!
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 такая хитрая штука : )
А когда замыкания рассмотрите?
Давно уже есть на канале ua-cam.com/video/BOjr2L3VXsc/v-deo.html