💻 Функции, стрелочные функции, контексты, замыкания в JavaScript

Поделиться
HTML-код
  • Опубликовано: 26 сен 2018
  • Функции: github.com/HowProgrammingWork...
    Замыкания: github.com/HowProgrammingWork...
    Курс «Основы программирования» с примерами на JavaScript habr.com/ru/post/464023/
    Оглавление курса: github.com/HowProgrammingWork...
    Патреон: / tshemsedinov

Комментарии • 137

  • @anatolykobzisty9827
    @anatolykobzisty9827 5 лет назад +128

    00:00:00 Введение
    ----------------------------------------------- Способы определения функций ---------------------------------------------------
    00:11:22 Функция объявление (Declaration)
    00:12:46 Функция выражение (Expression)
    00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)
    00:16:43 Лямбда-функция (Lambda function)
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    00:18:45 Область видимости (Scope)
    00:25:00 Функции, как абстракции
    00:26:43 Методы функции (name, length, toString( ) )
    00:31:26 Значения по умолчанию у функции
    00:36:46 Rest-оператор (...args)
    00:41:49 Способ определения функции, через new Function
    00:44:46 Функции внутри объекта
    00:50:42 Обращение к полям объекта из привязанной функции, через this
    00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)
    00:58:30 Методы функции, наследуемой от объекта (call, apply)
    01:00:53 Комментирование функций
    01:01:27 Задание декомпозиции функции
    01:04:24 Замыкание: context
    01:08:41 Замыкание: chainning
    01:11:55 Замыкание: summator
    01:14:16 Замыкание: recursion

    • @nikitasobolev8288
      @nikitasobolev8288 4 года назад +2

      Давайте полайкаем этот коммент наверх!

  • @cassinid8843
    @cassinid8843 5 лет назад +113

    Спасибо большое что сделали лекции доступными не только Вашим студентам. Для заочников, которые учатся сами, такая помощь неоценима. Теперь точно знаешь что и в каком порядке нужно учить, это не говоря о том, что вы очень вдохновляете работать много и усердно :)

  • @mokkamokka4097
    @mokkamokka4097 5 лет назад +50

    Вы самый лучший!!!!!! Круче всех однозначно! Тем кто у вас учится повезло невероятно. Спасибо!

  • @user-py7er1gx4l
    @user-py7er1gx4l 5 лет назад +49

    Такому на курсах фронтенд не научат.Спасибо огромное)))

    • @alym.aleksey
      @alym.aleksey 3 года назад +1

      не у впрек автору, но такому научат на любых курсах, это прям база, и тут нет глубины, просто стандартная поверхностная информация

  • @antonparhom1251
    @antonparhom1251 2 года назад +8

    Удивительная вещь третий раз пересматриваю и по прежнему узнаю для себя новые вещи) Огромнейшее спасибо!

  • @nikitakirilin9776
    @nikitakirilin9776 3 года назад +19

    1:17:00 набор чисел в примере конечно очень подозрительный...

  • @yamumuyolobro513
    @yamumuyolobro513 2 года назад +9

    Хотелось бы сказать спасибо за то, что вашими лекциями могут пользоваться любые студенты. Жаль, у нас в Вузе нет подобных преподавателей, хотелось бы им всем включить ваши лекции и обучаться вместе с вами. Привет вам из Иркутска!

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад

      ruclips.net/video/PjEuPimpXhA/видео.html

    • @yamumuyolobro513
      @yamumuyolobro513 2 года назад +1

      @@TimurShemsedinov Посмотрю позже, спасибо)
      Сейчас смотрю ваш материал по callback и наконец-то понимаю, что это такое)

  • @WebEnv
    @WebEnv 2 года назад +8

    это лучшее что я видел по нативному js

  • @senriamiezaru5563
    @senriamiezaru5563 4 года назад +6

    Спасибо за плейлист! После поверхностного ознакомления с синтаксисом на курсах, искал что-то более глубокое, и нашел! Кроме углубленных определений, еще и показаны разные случаи, что помогает структурировать картину в голове. Спасибо!

  • @takedaheroku
    @takedaheroku 2 года назад +7

    Все четко по полочкам. Отличный материал. Спасибо автору.

  • @kirillpodolinniy309
    @kirillpodolinniy309 4 года назад +5

    Тимур, благодарю Вас! Может просто пришло время, но я все таки понял замыкания, большое вам спасибо)

  • @user-fi2iy3qt5q
    @user-fi2iy3qt5q 3 года назад +2

    Спасибо! Очень толковые лекции, благодарю.

  • @user-jb1kn4bt6k
    @user-jb1kn4bt6k 5 лет назад +6

    лучший, бро!) я давно такой контент искал!

  • @TimaGixe
    @TimaGixe Год назад

    Чудова лекція! Дякую вам за вашу працю! 🚀

  • @gagogoga794
    @gagogoga794 3 года назад +2

    Отличный материал!👍🏻

  • @artem_soporno
    @artem_soporno 11 месяцев назад +1

    Отличный материал. Спасибо автору.

  • @oldodyn
    @oldodyn 5 лет назад +3

    Круто. Все понятно.

  • @Doox911
    @Doox911 5 лет назад +6

    Одна из лучших лекций про замыкание! Было бы чудесно, если бы ещё и тайм коды добавили. Так как смотреть это буду многократно, да и не только я! Супер!

    • @Fodintsov
      @Fodintsov 5 лет назад +4

      Дык добавьте, когда в следующий раз будете смотреть. Поделитесь с автором и сделаете добро всем.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 5 лет назад

      @@Fodintsov сделайте вы

    • @Fodintsov
      @Fodintsov 5 лет назад

      @@Das.Kleine.Krokodil Я Вам разрешаю.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 5 лет назад

      @@Fodintsov Только после вас. Будьте так любезны.

    • @Fodintsov
      @Fodintsov 5 лет назад

      @@Das.Kleine.Krokodil Да точно нет. Мне и без таймкодов живется сладко. А вот тот, кто просит их, вполне в силах сделать их самостоятельно.

  • @dmitrijponkin
    @dmitrijponkin 4 года назад +3

    Спасибо!

  • @igorsavelev9013
    @igorsavelev9013 5 лет назад +7

    Вообще старый и новый способы объявления параметров по умолчанию не совсем одинаковы: мы можем передавать в качестве аргумента, к примеру, null и при старом способе у нас будет использоваться именном значение по умолчанию в качестве аргумента, а при новом - null

  • @ruslanglaznyov9117
    @ruslanglaznyov9117 5 лет назад +13

    Можно пожалуйста ссылки на лекции Степанова? Спасибо за ваш труд!

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +12

      ruclips.net/p/PLHhi8ymDMrQb4sVDBsN5y14X4BoAUU6Sh

  • @user-vy7yk9os7q
    @user-vy7yk9os7q 2 года назад

    Спасибо за уроки! Вопрос.
    36:00 Вы говорите, что такой код до сих пор актуален, когда мы занимаемся кодом, связанным с предметной областью. Возможно ли там переписывание функции, с применением значений по умолчанию, по стандарту ES6, вида
    function fnHashNew({ a = [7, 25, 10], b = 'Hello', c = 100 } = {}) {
    console.dir({ a, b, c });
    }
    или там, всё же правильнее использовать, код, который используется Вами в примерах, с использованием оператора ИЛИ (||)?

  • @zhelyakea
    @zhelyakea 5 лет назад +4

    Спасибо большое за лекции, очень доходчивое и подробное изложение материала! Хотел для себя уточнить по поводу термина "лямбда функция", у Вас он используется только применительно к стрелочным функциям, но вроде как лямбда функция подразумевает под собой объявление анонимной функции, а не именно стрелочной? Спасибо!

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +4

      Я употребляю это как синоним стрелок (или функций не имеющих своего this), хоть стрелки в js тоже могут быть не анонимными, например: const func = () => {}; и потом console.log(func.name); В свойство name записывается название первой переменной, в которую функцию присвоили при объявлении, а чтоб сделать действительно анонимную: const func = (() => () => {})(); теперь func.name пустой. В использовании const func = function () {}; теперь осталось мало смысла, т.к. это нужно менять на стрелку в подавляющем большинстве случаев.

    • @zhelyakea
      @zhelyakea 5 лет назад +1

      @@TimurShemsedinov Спасибо большое за разъяснение!

  • @ondreeey3004
    @ondreeey3004 7 месяцев назад

    42:40: "Ну, это практически eval. Это неприлично."
    eval - функция, чье имя нельзя произносить вслух😆

  • @bayalesko7956
    @bayalesko7956 Год назад +2

    По комментариям видно что кроме меня некого не заинтересовало почему компьютер Тимура зарядилось всего на %1 за 2 часа 😅

    • @TimurShemsedinov
      @TimurShemsedinov  Год назад +2

      В старых версиях федоры не обновляется заряд на диапазоне 98-100%, уже давно поправлено

  • @antonparhom1251
    @antonparhom1251 3 года назад +1

    Спасибо Тимур Гафарофич за интересную лекцию! Скажите в каких случаях нужно использовать лямбда функцию?

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +2

      Во всех слкчаях, кроме функций, которые становятся методами прототипов, классов и объектов, т.е. везде, где не нужен this.

  • @VadimShch
    @VadimShch 4 года назад +3

    Наверное писали уже... В последнем примере замыканий ошибка, точнее в том как Вы его прокомментировали. a1 в 15 строке замыкается на 5, а не на 10 и далее тоже самое.

  • @tech-with-nd
    @tech-with-nd Год назад +1

    Хотів би додати ремарку щодо 34-ої хвилини відео, де порівнюються дефолтні значення аргументів функції до оператора ||. Це є помилковим твердженням, адже дефолтні значення використаються лише в тому разі, коли аргумент буде undefined, інакше підміни не буде та значення може залишиться null. У випадку з || перехід на правий операнд відбудеться при будь якому false твердженню лівого операнда, включно з null.

  • @evgenkaban6018
    @evgenkaban6018 5 лет назад +5

    замечательные лекции, спасибо, если есть возможность материалы которые вы указываете в лекциях добавить в описание, или где их можно найти

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      Тут ссылки на все репозитории с примерами кода - github.com/HowProgrammingWorks/Dictionary

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      Примеры с функциями - github.com/HowProgrammingWorks/Function
      с замыканиями - github.com/HowProgrammingWorks/Closure

    • @evgenkaban6018
      @evgenkaban6018 5 лет назад +1

      @@TimurShemsedinov спасибо за ответ, я, наверное неправильно выразился, в начале вы упоминаете лекции Степанова, в видео про Git обещаете конспект с основными командами, наверное их можно найти в Dictionary, но было бы удобно сразу в описании к видео, но это скорее пожелание

    • @romanilienko2357
      @romanilienko2357 5 лет назад +1

      Evgen Kaban у Тимура в плейлисте программингс есть.

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      @@evgenkaban6018 ruclips.net/p/PLHhi8ymDMrQb4sVDBsN5y14X4BoAUU6Sh

  • @malkovan
    @malkovan 3 года назад +1

    Это задание из темы Функции, лямбды, контексты, замыкания в JavaScript
    ссылка на GitHub: github.com/HowProgrammingWorks/Closure
    Первое задание: github.com/HowProgrammingWorks/Closure/blob/master/Exercises/1-seq.js
    Решение подразумевает, просто какую-то дикую вложенность!
    Это пример из правильного решения ( seq(c => a(b(c))) ) как вообще можно это прочитать?
    Второе задание.
    Я не нашёл ни одного примера на Гитхабе, где находится курс HPW,
    где бы Вы объясняли этот материал до этого задания (второго).
    Как в таком случае необходимо проходить обучение по Вашему курсу,
    если последовательное прохождение лекций и выполнение заданий
    подразумевает получение дополнительных знаний, которые Вы не освещаете?
    При этом позиционируете курс как начальный в программировании.
    В данном частном случае, укажите, пожалуйста, где в Вашем курсе находится
    материал освещающий возможность делать такие конструкции как в задании номер 2?
    Решение должно быть по типу ( const f = () => {}, f.push = a => {} ) для примера?
    На основании какаго материала из Вашего курса должно быть понимание
    как выполнить это задание?

  • @o_leh
    @o_leh 5 лет назад +1

    то что вы говорите об оптимизирующих компиляторах, это касается только ноды, или браузерного JS тоже?

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +2

      Хрома с V8 в первую очередь, но и другие движки оптимизируют похожим образом. Лучше всего ориентироваться не на конкретный движок, а на здравый смысл, теорию типов и оценку сложности алгоритмов, тогда есть вероятность, что разработчики виртуальных машин на это же ориентировались.

    • @o_leh
      @o_leh 5 лет назад +1

      @@TimurShemsedinov спасибо

  • @rinatvaliullov3247
    @rinatvaliullov3247 4 года назад +5

    Скиньте те самые лекции Степанова, пожалуйста

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад +2

      ruclips.net/p/PLHhi8ymDMrQb4sVDBsN5y14X4BoAUU6Sh

  • @user-hn1em9ms7n
    @user-hn1em9ms7n 4 года назад +1

    На 54:10 Вы говорите, что f1, f2, f3 - это функции с побочными эффектами. Разве это так? Они не являются чистыми, не являются детерминированными, но побочных эффектов у них нет. Или я ошибаюсь?
    Файл: github.com/HowProgrammingWorks/Function/blob/master/JavaScript/9-this.js

    • @alexeishilin
      @alexeishilin 4 года назад

      я полагаю, что здесь "побочный эффект" употребляется как синоним нечистой функции. f1, f2, f3 зависят не только от своих аргументов, но и от внешнего состояния (this)

    • @RisDeep
      @RisDeep 4 года назад

      @@alexeishilin неправильно значит употребляется

  • @valovweb
    @valovweb 5 лет назад +1

    также в файле 5-default в последнем примере можно использовать деструктуризацию для задания параметров по умолчанию , например так:
    function fnHash({ a: a = [7, 25, 10], b: b = 'Hello', c: c = 100}) {
    const args = {a, b, c};
    console.log(a);
    console.log(b);
    console.log(c);
    console.log(args);
    }
    const args = {a: 10, b: 20};
    fnHash(args);

    • @valovweb
      @valovweb 5 лет назад

      также этот способ позволит избежать мутации переданного объекта args.

  • @antonparhom1251
    @antonparhom1251 2 года назад

    Здравствуйте Тимур Гафарович! Скажите почему при объявлении индетификаторов функций и массивов мы делаем через const ?

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +1

      Потому, что мы не собираемся их переприсваивать, ссылки не изменятся. А если бы нужно было менять, то let бы использовали, но этого лучше избегать.

    • @antonparhom1251
      @antonparhom1251 2 года назад

      @@TimurShemsedinov Спасибо!

  • @jamjam3337
    @jamjam3337 Год назад

    👏👍

  • @voidshah
    @voidshah 5 лет назад +2

    Тимур, вы говорили в лекции за лекции Степанова. Можно ссылку?! И еще такой вопрос. Ваше отношение к TypeScript? Пишете на нем?!

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад

      Я постоянне не пишу на тайпскрипте, но для некоторых лекций буду его использовать, например ruclips.net/video/r6W2z3DQhoI/видео.html

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +3

      Лекции Степанова в плейлисте у меня в канале ruclips.net/p/PLHhi8ymDMrQb4sVDBsN5y14X4BoAUU6Sh

    • @voidshah
      @voidshah 5 лет назад

      @@TimurShemsedinov Еще раз благодарю!

    • @voidshah
      @voidshah 5 лет назад

      @@TimurShemsedinov как по мне TS перекрывает многие недостатки чистого JS, особенно это касается типизации и статического анализа кода, даже если не брать во внимание дженерики, декораторы и прочее

    • @rtfmetal
      @rtfmetal 4 года назад +1

      @@voidshah если бы динамическая типизация была бы недостатком, то JS бы сделали со статической типизацией =)

  • @dmitripolevoi4473
    @dmitripolevoi4473 2 года назад +2

    У нео из матрицы такая же ide

  • @WMorgun
    @WMorgun 5 лет назад +2

    а где док найти, о котором говорится в лекции?) Хочу получше узнать, что функция наследует еще

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      Это? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

    • @WMorgun
      @WMorgun 5 лет назад +1

      @@TimurShemsedinov да! Благодарю!)

  • @pavlezt
    @pavlezt 5 лет назад +9

    В прикладі про default звучало що новомодні default і старі || одинакові.
    Але я думаю тут важливо було наголосити
    шо якшо в параметри передавати наприклад 0
    то в стилі || значення замінить, а в default залишиться 0

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +2

      Да, это существенное замечание, спасибо

    • @mirdizayna
      @mirdizayna 5 лет назад +5

      Дополню комментатора выше, для тех кто читает по диагонали:
      const a = (b = 'default') => {
      return b; // вернет дефолтное значение, только если в функцию не будет передан параметр или его значение будет undefined
      };
      const c = (d) => {
      return (d || 'default'); // вернёт 'default' в случае, если логическое значение d приводится к false, а это любой из (false, 0, "", null ну и undefined)
      };
      // пример:
      console.log(a(),a(undefined),a(null),a(0),a(false), a(''));
      console.log(c(),c(undefined),c(null),c(0),c(false), c(''));

  • @pudzia20100
    @pudzia20100 3 года назад

    Вопрос:
    const sum = new Function('a, b', 'return a + b');
    const sum1 = (a,b) => (a+b);
    console.dir({
    name: sum.name,
    //name: 'anonymous,
    name1: sum1.name,
    //name: 'sum1' Почему тут выводит имя а а для sum нет?
    length: sum.length,
    toString: sum.toString(),
    });

  • @Karmazins
    @Karmazins 5 лет назад

    Добрый день !
    Проясните пожалуйста вопрос .
    Почему вы говорите , что функция принимает аргументы , если она принимает параметры ?
    Все параметры вы называете аргументами .
    Спасибо

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      Синонимы

    • @Karmazins
      @Karmazins 5 лет назад

      @@TimurShemsedinov спасибо

    • @oleglagoda3931
      @oleglagoda3931 5 лет назад +4

      @@Karmazins Параметры - это локальные переменные внутри функции, а аргументы это те значения которые мы передаем в функцию при ее вызове и тем самым инициализируем параметры.

  • @user-tg1je2vj1c
    @user-tg1je2vj1c 2 года назад +1

    13:30 Тимур, где вы узнаете такие тонкие детали про разделении функций и тому подобное.

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад

      Статьи и доклады авторов виртуальных машин и движков js

    • @user-tg1je2vj1c
      @user-tg1je2vj1c 2 года назад

      @@TimurShemsedinov Не хочу вас "дергать", но можно пару статей

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад

      mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +1

      erdem.pl/2019/08/v-8-function-optimization

    • @user-tg1je2vj1c
      @user-tg1je2vj1c 2 года назад

      @@TimurShemsedinov Ух ты спасибо

  • @TheZloymedved
    @TheZloymedved 3 года назад +1

    Если намберы и булеаны хранятся напрямую в стеке вызовов, то вопрос по вот такому коду:
    ```
    function f() {
    num = 1;
    fetch(...).then(() => console.log(num));
    }
    f();
    ```
    Коллбек внутри then выполнится по завершении http-запроса, к тому времени call stack будет уже очищен, возможно даже несколько раз. Где же в это время хранится переменная num?

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      В замыкании (closure)

    • @TheZloymedved
      @TheZloymedved 3 года назад +1

      @@TimurShemsedinov Кажется, разобрался, прошу поправить, если я где-то ошибся: в замыкании хранятся ссылки на все внешние лексические окружения, даже когда из call stack их родительские execution contexts уже выброшены. При этом само замыкание хранится в куче до тех пор, пока на него есть ссылка (в моем примере ссылка изнутри промиса).

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      @@TheZloymedved да, это может приводить к утечкам памяти, если не понимать, что держит замыкание, но вообще - очень удобно

  • @eugenekarpenko9799
    @eugenekarpenko9799 5 лет назад +1

    Видео остановлено на примере 4. Разбор остальных примеров в видео не попал?

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад

      Там уже идут функторы и чеининг, аналогичные примеры можно посмотреть в ruclips.net/video/PfuEfIiLX34/видео.html и ruclips.net/video/3Z7f0Gi8pxw/видео.html Возможно даже где-то эти разобраны.

    • @eugenekarpenko9799
      @eugenekarpenko9799 5 лет назад

      ​@@TimurShemsedinov Спасибо. В пределах данной лекции интересно было бы еще про функции шаблонизации рассказать

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад

      @@eugenekarpenko9799 Шаблонизации строк f`...` ?

  • @igorscream
    @igorscream 4 года назад

    48:30. Так разве [powName] - это не деструктуризация массива? Хотя, тогда по логике должно получиться название просто 'p' по первому элементу строки 'pow'

    • @RK-gm4pd
      @RK-gm4pd 4 года назад

      скорее computed property
      stackoverflow.com/questions/50376353/wy-we-need-to-put-e-target-name-in-square-brackets
      stackoverflow.com/questions/1184123/is-it-possible-to-add-dynamically-named-properties-to-javascript-object?rq=1

  • @oleksandrlypko3117
    @oleksandrlypko3117 5 лет назад

    Буде круто, якщо викладете лекції у вигляді підкасту)

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +3

      Без видео не получится. Как код показать?

    • @berberisbellis4085
      @berberisbellis4085 5 лет назад

      Подскаты обычно не такие информативные

    • @pavlezt
      @pavlezt 5 лет назад +2

      будеш в голові код писать і компілить?

  • @michaileserkheev3826
    @michaileserkheev3826 2 года назад +1

    что за редактор используется 18:43

    • @TimurShemsedinov
      @TimurShemsedinov  2 года назад +1

      mcedit, это часть файлового менеджера midnight commander

  • @aleksprimetv
    @aleksprimetv 3 года назад +4

    Работаю на фронте уже 1,5года и все равно узнаешь какие то интересные моменты, не смотря на то, что это основы)

    • @dm.hol.3624
      @dm.hol.3624 2 года назад

      Да я три года работаю во фронте, за первые две минуты понял, что в айти мне делать нечего - я ничего не знаю //_\\

    • @centralcat3325
      @centralcat3325 6 месяцев назад

      @@dm.hol.3624 ты на том фронте который с автоматами что ли?

  • @anastasiagolunova
    @anastasiagolunova 4 года назад +3

    Спасибо за лекцию! но возник вопрос:
    почему const a = Math.sin; - функция
    const a = 5; - coздание константы ?

    • @user-ze1zr4ki9w
      @user-ze1zr4ki9w 4 года назад +3

      Если я правильно понимаю, то это одна из идей функционального программирования. "Функции первого класса". Могут передоваться в аргументы, возвращаться другой функцией, присваиваться. Если вы не понимаете в чем отличие между function setFn() {} и var setFn = function () {}, посмотрите пожалуйста статьи на тему function expression vs function declaration

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад +2

      const a = 5; лучше называть объявлением идентификатора (даже допустимо сказать - объявление переменной). Потому, что константы пишутся большими буквами const TIMEOUT = 5000;

  • @getfunbyfifa2825
    @getfunbyfifa2825 5 лет назад +2

    где потренироваться?

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +1

      В некоторых лекциях я даю задания, но позже я что-то придумаю с практикой и опубликую

    • @getfunbyfifa2825
      @getfunbyfifa2825 5 лет назад

      @@TimurShemsedinov не смог найти репозиторий с заданием декомпозиции

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад +2

      @@getfunbyfifa2825 Декомпозиция по слоям - github.com/HowProgrammingWorks/AbstractionLayers/tree/master/JavaScript
      Декомпозиция функциональная - github.com/HowProgrammingWorks/Abstractions/tree/master/JavaScript

  • @boycovclub
    @boycovclub 3 года назад +1

    Закинули бы вы этот курс в Udemy и денежку хорошую заработали вы, а также мы получили сертификаты, о то что прослушали ваш курс)

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      Не очень интересно мне это. А сертификаты я сам выдаю, зачем мне удемия?

    • @boycovclub
      @boycovclub 3 года назад +1

      @@TimurShemsedinov а на каком портале и где вы свои курсы преподаете?

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      @@boycovclub У меня курсы открытые, вот они github.com/HowProgrammingWorks/Index

    • @boycovclub
      @boycovclub 3 года назад +1

      @@TimurShemsedinov спасибо )

  • @MrRUSAXXX
    @MrRUSAXXX 5 лет назад +1

    Если честно, то вообще не понял из этой леции что такое замыкание.
    medium.com/@sshambir/%D0%BE%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC-%D0%B7%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2-javascript-5b83267ef7d1
    Вот хорошая статья, которая рассказывает откуда берется замыкание, почему переменные после работы функции все еще доступны и как оно работает

  • @gazoo_the_great
    @gazoo_the_great 10 месяцев назад

    лекции читаются в стиле "ну, эт самое, как бы оно"

  • @IHORhoncharenko
    @IHORhoncharenko Год назад

    Советовали Вас..отметил для себя что как специалист Вы очень сильный..но как преподаватель - нет. С областью видимости как то так все сумбурно объяснили..могли бы хотя бы продебажить скрипт что бы наглядно показать как построчно обрабатывается код и что откуда берется...либо как то иначе..Ваш вариант объяснений мне не зашел. Субъективное мнение.

  • @demimurych1
    @demimurych1 3 года назад

    Не очень понятно как можно начать лекцию с упоминания о работе оптимизатора, коснуться проблем мономорфизма и полиморфизма , чтобы потом начисто забыть об этом и давать вредные советы про a = a || 'defaultValue' и иже с ним.

  • @oom6847
    @oom6847 3 года назад +1

    Sorry, but Kyiv. Not Kiev.

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      Kyiv is a translit, Kiev is an English word

    • @oom6847
      @oom6847 3 года назад

      @@TimurShemsedinov
      I respect your opinion, but it's wrong.
      In June 2019, at the request of the United States Department of State, the Embassy of Ukraine to the United States, and Ukrainian organizations in America, the name Kyiv was officially adopted by the United States Board on Geographic Names as the only correct one, which resulted in the federal government of the United States using only the new name.
      The source is Foreign Names Committee (FNC) Documents geonames.nga.mil/gns/html/PDFDocs/BGNStatement_Kyiv.pdf

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      @@oom6847 US Department of State isn't a right body to change rules of English language, and referring to authority isn't a right way to argue

  • @Antonio-fm1sq
    @Antonio-fm1sq 3 года назад +1

    Спасибо!