background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Every JavaScript Developer Has Made This Mistake With Functions"

input logo icon
Теги видео
|

Теги видео

webdevsimplified
pass function to function
js functions
pass function to function js
javascript functions
js function tutorial
js beginner mistakes
js beginner
javascript function tutorial
javascript beginner mistakes
javascript beginner
callbacks
wds
javascript
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:01
изучать JavaScript только сегодня или уже
00:00:03
много лет занимаетесь программированием,
00:00:04
это то, что я гарантирую, что вы
00:00:06
снова и снова все портите
00:00:08
[Музыка]
00:00:11
добро пожаловать обратно в веб-разработку, упрощенно, меня
00:00:13
зовут Кайл, и моя работа чтобы упростить
00:00:15
вам работу в Интернете,
00:00:16
и в этом видео мы
00:00:17
поговорим об идее передачи
00:00:19
функций другим функциям, по сути, об
00:00:21
обратных вызовах,
00:00:22
и вы можете подумать, что вы уже
00:00:23
полностью разобрались с этим и знаете, как
00:00:25
это работает, но я гарантирую вам, что В этом видео я
00:00:27
собираюсь объяснить вещи о функциях,
00:00:28
о которых вы никогда раньше даже не задумывались,
00:00:30
и оно действительно изменит
00:00:31
ваше представление о функциях,
00:00:33
и первое, о чем мы думаем, просто
00:00:34
взглянув на этот код, у нас есть простая
00:00:36
функция под названием print
00:00:37
мы передаем ему значение, и он выводит его из системы, как
00:00:38
вы можете видеть, он работает нормально, он
00:00:40
распечатывает hello world,
00:00:41
но что такое печать, что вообще такое
00:00:44
печать, это функция, верно,
00:00:45
но что произойдет, если мы выйдем из системы, чтобы
00:00:47
распечатать, мы просто вызовите функцию print,
00:00:49
не вызывая ее на самом деле, потому что с
00:00:50
функцией,
00:00:51
когда вы используете круглые скобки с этой
00:00:52
функцией, которую вы вызываете,
00:00:54
она выполняет код внутри этой
00:00:56
функции, что произойдет, если вы получите доступ к функции,
00:00:58
фактически не вызывая ее, хорошо, если мы
00:00:59
это выведем из системы Посмотрим, как
00:01:01
фактическое определение этой функции будет
00:01:03
распечатано на нашем экране,
00:01:04
но смотреть на это таким образом не очень полезно,
00:01:06
потому что на самом деле это то же самое,
00:01:07
что и в нашем коде,
00:01:09
поэтому, если мы используем console.dir вместо
00:01:11
console. log,
00:01:12
это позволит нам распечатать
00:01:13
более интересную информацию, поэтому, если
00:01:15
мы вернемся к консоли,
00:01:16
вы увидите, что теперь мы можем расширить нашу
00:01:18
функцию, и что вы заметили в
00:01:20
этой функции: она на самом деле очень похожа на
00:01:22
объект, если мы распечатываем объект и
00:01:23
придаем ему некоторые свойства, он будет
00:01:24
выглядеть почти так же,
00:01:26
позвольте мне показать вам, о чем я говорю,
00:01:27
если я сделаю простой console.log
00:01:29
для объекта, мы дадим ему имя
00:01:31
Кайл, и мы я собираюсь дать ему возраст
00:01:33
26,
00:01:35
и теперь, если я сохраню, вы увидите, что этот
00:01:36
объект здесь и эта функция вот
00:01:38
здесь они выглядят
00:01:39
очень похожими, когда вы распечатываете их на
00:01:41
консоль, и это потому, что
00:01:42
функция
00:01:43
на самом деле является просто объектом. в javascript
00:01:45
это просто объект,
00:01:46
который вы можете вызвать, используя круглые скобки,
00:01:48
как мы это сделали здесь, и
00:01:50
передавая разные аргументы,
00:01:51
поэтому из
00:01:53
этого небольшого обсуждения важно вынести то, что функция
00:01:55
на самом деле подобна объекту и
00:01:57
объект - это просто переменная, которую вы можете передавать.
00:01:58
Я могу передать этот объект в
00:02:00
функцию. Я
00:02:01
могу вызывать вещи в объекте. Я
00:02:02
могу изменить объект и делать с ним все, что
00:02:04
захочу. То же самое с функцией. Это просто
00:02:06
переменная, которую я могу передать. эту
00:02:08
функцию где угодно, так что теперь
00:02:10
предположим, что я создаю еще одну функцию,
00:02:12
и эта функция будет принимать
00:02:13
другую функцию, я собираюсь дать ей
00:02:15
другую функцию и написать для нее некоторый код,
00:02:17
так что, скажем так, использование обратного вызова будет таким,
00:02:20
как это делает,
00:02:21
и он будет принимать обратный вызов,
00:02:23
этот обратный вызов прямо здесь - это просто
00:02:24
функция, которую
00:02:25
я собираюсь передать в функцию, называемую
00:02:27
обратным вызовом, которую я собираюсь вызвать,
00:02:29
я собираюсь передать ее в качестве значения, в нашем
00:02:30
случае мы мы собираемся передать значение
00:02:32
hello,
00:02:33
так что теперь допустим, что я хочу использовать эту
00:02:34
функцию обратного вызова, я скажу использовать обратный вызов,
00:02:36
и мне нужно передать его в функцию, а
00:02:39
функция, которая у нас есть, называется
00:02:40
print,
00:02:41
и теперь происходит следующее: я говорю: «
00:02:42
Эй, используйте обратный вызов», он примет
00:02:44
функцию, называемую обратным вызовом, и
00:02:46
передаст ей текст «привет», в нашем случае мы передаем
00:02:49
функцию print
00:02:50
в эту функцию обратного вызова, поэтому, когда
00:02:52
я сохраню, вы увидите, что она печатает «привет»
00:02:53
на экране
00:02:54
это работает так: когда я
00:02:55
вызываю использование обратного вызова, я по сути
00:02:57
создаю переменную с именем обратного вызова, в которую
00:02:59
я передаю print, чтобы сделать это
00:03:02
без использования функции, это выглядело бы так же,
00:03:04
как это было бы, если бы я сказал, что const
00:03:06
print равно,
00:03:07
извините, обратный вызов const равен print,
00:03:10
а затем я вызвал обратный вызов с
00:03:12
приветом, этот фрагмент кода прямо здесь
00:03:16
делает то же самое, что и вызов
00:03:17
функции, и это только потому, что когда
00:03:19
вы вызываете функцию, все, что вы на самом деле
00:03:20
делаете, это сопоставляю одну переменную
00:03:22
с переменной в этой функции, поэтому я
00:03:23
сопоставляю print с обратным вызовом имени,
00:03:25
а затем использую обратный вызов прямо здесь,
00:03:27
и причина, по которой это работает, заключается в том, что,
00:03:28
как я уже говорил ранее, функция
00:03:29
- это просто переменная, которую я просто переопределяю
00:03:31
это в эту переменную здесь, когда я сохраняю, мы
00:03:33
получаем тот же вывод здесь, теперь это
00:03:34
то, что сбивает с толку многих
00:03:36
людей, когда они программируют, потому что
00:03:37
они на самом деле не понимают, что функции
00:03:39
такие же, как и все остальное в
00:03:40
Javascript, они просто переменная,
00:03:42
по сути, подобна объекту,
00:03:43
большинство людей думают о функциях как о
00:03:44
чем-то совершенно другом, это
00:03:46
новая вещь, которая работает иначе, чем
00:03:47
все остальное,
00:03:48
но на самом деле функция похожа на
00:03:51
обычный объект, она работает точно так же, с той
00:03:53
лишь разницей, что вы можете вызвать
00:03:55
функцию, используя круглые скобки,
00:03:57
и передать ей разные параметры,
00:03:59
это единственная разница, я даже могу
00:04:00
установить значения для функции,
00:04:02
например, я мог бы сказать print.hi равно
00:04:06
test, а затем я могу просто сказать console.log
00:04:09
print.hi, вы вижу, что он распечатывает тест, я
00:04:13
могу хранить
00:04:14
на нем что-то, как будто это объект, и если я
00:04:16
сделаю этот небольшой трюк с console.dir,
00:04:18
вы можете увидеть здесь, что у нас есть такой
00:04:19
высокий уровень, установленный для нашей функции печати,
00:04:21
поэтому функция, как я сказал, просто как
00:04:23
объект, за исключением того, что вы можете его вызвать,
00:04:25
но люди смущаются, если мы
00:04:27
вернемся к предыдущему примеру здесь,
00:04:29
где у нас был этот обратный вызов,
00:04:30
многие люди сделали бы это, и передают его
00:04:32
в печать с круглыми скобками,
00:04:34
потому что большинство людей думают, что если у вас
00:04:36
есть функция,
00:04:37
после нее должны быть круглые скобки, но это не
00:04:39
сработает, когда я сохраняю, мы
00:04:40
получим кучу ошибок,
00:04:41
и это потому, что когда я вызываю печать, происходит
00:04:43
выполнение
00:04:44
кода внутри печати это вход в консоль,
00:04:46
значение которого не является ничем, вот
00:04:47
здесь мы получаем неопределенное значение,
00:04:49
а затем он принимает возврат
00:04:50
вызова этой функции, который в нашем случае
00:04:52
не имеет возврата, поэтому это то же самое, что и
00:04:53
возврат неопределенного значения,
00:04:54
и он передает неопределенное значение для нашего
00:04:56
обратного вызова, а затем мы мы пытаемся использовать
00:04:58
неопределенное значение в качестве функции, и именно здесь
00:04:59
мы получаем эту ошибку. Обратный вызов не является
00:05:01
функцией, потому что он не определен, чтобы
00:05:04
вернуть это к примеру объекта, скажем, у нас есть
00:05:06
объект
00:05:08
с именем person, и мы просто собираемся
00:05:09
дайте ему имя, которое
00:05:12
мы просто присвоим Кайлу, вот так, а
00:05:14
затем предположим, что мы хотим передать
00:05:16
человека в
00:05:17
функцию, и внутри здесь мы просто создадим
00:05:19
console.log
00:05:21
person и просто назовем этого
00:05:24
человека для печати, как что даже не беспокойтесь
00:05:27
об этой распечатке здесь,
00:05:28
поэтому, если мы сохраним, вы увидите, что она распечатывает
00:05:30
человека по имени Кайл, это имеет смысл,
00:05:32
ну, вы когда-нибудь придете сюда и скажете
00:05:34
person.name
00:05:36
и ожидаете, что он все равно распечатает
00:05:37
человека по имени нет он будет распечатывать
00:05:38
только имя Кайл,
00:05:40
это, по сути, то же самое, как если бы
00:05:41
это была функция, и после этого вы ставите
00:05:43
круглые скобки,
00:05:44
которые вызывают функцию, когда дело
00:05:46
доходит до этого объекта человека, который мы
00:05:47
вызываем это свойство, получая это
00:05:49
свойство имени, когда в действительности все, что нам нужно, это
00:05:51
реальный объект человека,
00:05:52
поэтому подумайте об этом, как будто это переменная,
00:05:54
хотите ли вы вызвать функцию и получить
00:05:56
результат этой функции,
00:05:57
или вы хотите на самом деле передавать
00:05:59
функцию
00:06:00
большую часть времени, когда вы имеете дело
00:06:01
с обратными вызовами вы хотите передать функцию,
00:06:04
и на самом деле это настолько распространено, что вы
00:06:06
можете передавать обратные вызовы как анонимные
00:06:08
функции, поэтому, если мы просто вернемся сюда, где мы
00:06:10
использовали обратный вызов, что мы могли бы сделать
00:06:11
вместо определения print up здесь,
00:06:13
мы могли бы просто определите нашу
00:06:14
функцию печати здесь, в строке, и я собираюсь
00:06:16
использовать для этого функцию стрелки,
00:06:17
если вы не знакомы с
00:06:19
функциями стрелки, я настоятельно рекомендую вам
00:06:20
посмотреть мое видео,
00:06:21
связанное с карточками, и описание к
00:06:22
ним, но, по сути, мы можем пройти мимо
00:06:24
функция, у которой нет имени,
00:06:25
и она будет что-то делать, в нашем
00:06:26
случае мы просто назовем
00:06:28
значение console.log, и она примет
00:06:30
значение, от которого мы можем избавиться, распечатайте здесь,
00:06:33
сохраните, и если мы просто убедимся, что мы
00:06:34
измените наш код здесь, чтобы он
00:06:36
вызывал
00:06:37
обратный вызов со значением hello, вы
00:06:39
можете видеть, что он печатает hello,
00:06:41
чтобы мы могли выполнить встроенную функцию, подобную
00:06:42
этой, это очень распространено, вы будете
00:06:44
видеть все время, или вы можете просто передать
00:06:46
обычную функцию,
00:06:47
большинство людей понимают, что это работает
00:06:49
нормально, они к этому привыкли,
00:06:50
но когда вы видите, что кто-то передает
00:06:52
имя функции, именно здесь
00:06:53
возникает вся путаница, просто помните, что
00:06:55
функция - это переменная,
00:06:56
и вы можете передавать ее так же, как любая
00:06:57
другая переменная, если это видео
00:07:00
помогло вам понять, как
00:07:01
работают функции и параметры,
00:07:02
я настоятельно рекомендую вам ознакомиться с моим
00:07:04
упрощенным курсом по Javascript,
00:07:05
он охватывает эту и многие другие темы,
00:07:07
которые большинство людей игнорируют при обучении
00:07:09
JavaScript, которые так сильно делают вашу жизнь.
00:07:10
проще и повышает вероятность
00:07:12
того, что вы получите работу,
00:07:13
поэтому я настоятельно рекомендую вам проверить это по
00:07:15
ссылке ниже.

Описание:

JavaScript Simplified Course: https://javascriptsimplified.com/ Did you know a function in JavaScript is actually just an object? This simple fact can be used to explain one of the most complex JavaScript concepts which is how passing functions to other functions works. This is a crucial concept to understand since most of JavaScript is built on passing functions to other functions. 📚 Materials/References: Arrow Functions Video: https://www.youtube.com/watch?v=h33Srr5J9nY Functions As Arguments Article: https://blog.webdevsimplified.com//2020-10/javascript-functions-as-arguments/ 🌎 Find Me Here: My Blog: https://blog.webdevsimplified.com My Courses: https://courses.webdevsimplified.com/ Patreon: https://www.patreon.com/webdevsimplified Twitter: https://twitter.com/DevSimplified Discord: https://discord.com/invite/7StTjnR GitHub: https://github.com/WebDevSimplified CodePen: https://codepen.io/WebDevSimplified ⏱️ Timestamps: 00:00 - Introduction 00:30 - Understanding What A Function Is 02:11 - Callback Example 03:35 - Functions Vs Objects 06:05 - Anonymous Functions

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Every JavaScript Developer Has Made This Mistake With Functions"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Every JavaScript Developer Has Made This Mistake With Functions" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Every JavaScript Developer Has Made This Mistake With Functions"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Every JavaScript Developer Has Made This Mistake With Functions" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Every JavaScript Developer Has Made This Mistake With Functions"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Every JavaScript Developer Has Made This Mistake With Functions"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.