Что такое генератор ?
Генератор - это функция способная хранить свое состояние, то есть способная останавливаться и заново запускаться
Для объявления генератора используется специальная синтаксическая конструкция: function*, которая называется «функция-генератор».
Основным методом генератора является next(). При вызове он запускает выполнение кода до ближайшей инструкции yield <значение> (значение может отсутствовать, в этом случае оно предполагается равным undefined). По достижении yield выполнение функции приостанавливается, а соответствующее значение – возвращается во внешний код:
Результатом метода next() всегда является объект с двумя свойствами: value, done
Методы:
Generator.prototype.next() - Возвращает значение, полученное выражением yield
Generator.prototype.return() - Возвращает заданное значение и заканчивает генератор
Generator.prototype.throw() - Выдаёт ошибку генератора.
Генератор - это функция способная хранить свое состояние, то есть способная останавливаться и заново запускаться
Для объявления генератора используется специальная синтаксическая конструкция: function*, которая называется «функция-генератор».
Основным методом генератора является next(). При вызове он запускает выполнение кода до ближайшей инструкции yield <значение> (значение может отсутствовать, в этом случае оно предполагается равным undefined). По достижении yield выполнение функции приостанавливается, а соответствующее значение – возвращается во внешний код:
Результатом метода next() всегда является объект с двумя свойствами: value, done
Методы:
Generator.prototype.next() - Возвращает значение, полученное выражением yield
Generator.prototype.return() - Возвращает заданное значение и заканчивает генератор
Generator.prototype.throw() - Выдаёт ошибку генератора.
👍6
Что такое каррирование ?
Каррирование – продвинутая техника для работы с функциями. Она используется не только в JavaScript, но и в других языках.
Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c).
Каррирование не вызывает функцию. Оно просто трансформирует её.
Каррирование либо уменьшение арности функции
Каррирование – продвинутая техника для работы с функциями. Она используется не только в JavaScript, но и в других языках.
Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c).
Каррирование не вызывает функцию. Оно просто трансформирует её.
Каррирование либо уменьшение арности функции
👍4
Стрелочные функции и контекст
Контекст - это объект в контексте которого выполняется функция.
Стрелочная функция в отличии от обычной не имеет своего контекста, она берет контекст на уровень выше.
Контекст можно привязать методами: call, apply, bind
Привязка контекста не работает со стрелочными функциями
Контекст - это объект в контексте которого выполняется функция.
Стрелочная функция в отличии от обычной не имеет своего контекста, она берет контекст на уровень выше.
Контекст можно привязать методами: call, apply, bind
Привязка контекста не работает со стрелочными функциями
👍3🤔1
Что такое IIFE и как эти пользоваться ?
Immediately-invoked function expressions (аббревиатура IIFE), что означает функцию, запускаемую сразу после объявления.
Это не то, что мы должны использовать сегодня, но, так как вы можете встретить это в старых скриптах, полезно понимать принцип работы.
Здесь создаётся и немедленно вызывается Function Expression. Так что код выполняется сразу же и у него есть свои локальные переменные.
Immediately-invoked function expressions (аббревиатура IIFE), что означает функцию, запускаемую сразу после объявления.
Это не то, что мы должны использовать сегодня, но, так как вы можете встретить это в старых скриптах, полезно понимать принцип работы.
Здесь создаётся и немедленно вызывается Function Expression. Так что код выполняется сразу же и у него есть свои локальные переменные.
👍4
Давайте знакомиться !
Меня зовут Кирилл.
Я автор этого канала и создатель бота @interviewITBot
Являюсь Senior Full-Stack разработчиком.
Сейчас работаю Тех Лидом в одной из Питерских компаний.
Вот мой тик ток где я создаю свой React за 15 секунд
Меня зовут Кирилл.
Я автор этого канала и создатель бота @interviewITBot
Являюсь Senior Full-Stack разработчиком.
Сейчас работаю Тех Лидом в одной из Питерских компаний.
Вот мой тик ток где я создаю свой React за 15 секунд
👍4
Как задать контекст функции ?
Это можно сделать тремя способами: call, apply, bind
call - первым принимает объект для задачи контекста, вторым принимает список аргументов функции ( функция будет сразу вызвана )
apply - первым принимает объект для задачи контекста, вторым принимает массив из аргументов функции ( функция будет сразу вызвана )
bind - первым принимает объект для задачи контекста, вторым принимает список аргументов функции ( будет создана новая функция и передана в переменную )
bind жестко привязывает контекст, то есть второй bind не отработает
В стрелочную функцию нельзя задать контекст
Это можно сделать тремя способами: call, apply, bind
call - первым принимает объект для задачи контекста, вторым принимает список аргументов функции ( функция будет сразу вызвана )
apply - первым принимает объект для задачи контекста, вторым принимает массив из аргументов функции ( функция будет сразу вызвана )
bind - первым принимает объект для задачи контекста, вторым принимает список аргументов функции ( будет создана новая функция и передана в переменную )
bind жестко привязывает контекст, то есть второй bind не отработает
В стрелочную функцию нельзя задать контекст
👍6
Всем привет ! На связи создатель этого канала и бота @interviewITBot.
Есть идея сделать курс для ребят уровня: Стажер, Junior, Middle, потому что сейчас нет четкого объяснения и растолковывая по многим вопросом.
Так как я провел более 50 собеседований, большинство не понимает одни и те же темы
К примеру: протипирование, отрисовка страницы, поток документа, контекст, цикл событий,чистый код, CRP и так далее ( тем реально много, так как в большинстве уроках поверхностная муть )
Касаемо фронтенда: Виртуальный Дом, Fiber, оптимизация, стейт менеджеры, хуки, почему опытные разрабы не любят функциональные компоненты
( и еще куча всего, что не говорят )
Никто не говорит про typescript, хотя по факту это уже стандарт
Даже у человека знающего ts, спросив что такое перегрузка функции или зачем тип unknown,то он будет непонимать о чем идет речь
По бэку банальный вопрос как работает нода всех ввергает в шок.
Все полученные деньги, будут вложены в этот канал и бота собеседника.
После курса ребята Стажеры и Junior-ы, могут называться мидалми. А Мидлы, будут еще крепче
Сейчас создам голосование, чтобы понимать будет ли такое интересно
Минимальное количество людей: 10
Есть идея сделать курс для ребят уровня: Стажер, Junior, Middle, потому что сейчас нет четкого объяснения и растолковывая по многим вопросом.
Так как я провел более 50 собеседований, большинство не понимает одни и те же темы
К примеру: протипирование, отрисовка страницы, поток документа, контекст, цикл событий,чистый код, CRP и так далее ( тем реально много, так как в большинстве уроках поверхностная муть )
Касаемо фронтенда: Виртуальный Дом, Fiber, оптимизация, стейт менеджеры, хуки, почему опытные разрабы не любят функциональные компоненты
( и еще куча всего, что не говорят )
Никто не говорит про typescript, хотя по факту это уже стандарт
Даже у человека знающего ts, спросив что такое перегрузка функции или зачем тип unknown,то он будет непонимать о чем идет речь
По бэку банальный вопрос как работает нода всех ввергает в шок.
Все полученные деньги, будут вложены в этот канал и бота собеседника.
После курса ребята Стажеры и Junior-ы, могут называться мидалми. А Мидлы, будут еще крепче
Сейчас создам голосование, чтобы понимать будет ли такое интересно
Минимальное количество людей: 10
👍3
👍1
Какие типы есть в TypeScript ?
TypeScript - выделяют два определения: 1) Это строго типизированный язык, компилирующийся в JavaScript. 2) TypeScript это надстройка над JavaScript, которая привносит типы и так далее.
Какие в TypeScript есть типы данных: boolean ( логическое значение true или false ), number ( числовое значение ), string ( строки ), Array ( массивы ), кортежи ( неизменяемый массив ), Enum ( перечисления ), Any ( произвольный тип ), Symbol, null и undefined (соответствуют значениям null и undefined в javascript ), Never ( также представляет отсутствие значения и используется в качестве возвращаемого типа функций, которые генерируют или возвращают ошибку ), Void ( не возвращающий ничего из функции ), Unknown ( тип который неизвестен, тип который должен быть переопределен )
TypeScript - выделяют два определения: 1) Это строго типизированный язык, компилирующийся в JavaScript. 2) TypeScript это надстройка над JavaScript, которая привносит типы и так далее.
Какие в TypeScript есть типы данных: boolean ( логическое значение true или false ), number ( числовое значение ), string ( строки ), Array ( массивы ), кортежи ( неизменяемый массив ), Enum ( перечисления ), Any ( произвольный тип ), Symbol, null и undefined (соответствуют значениям null и undefined в javascript ), Never ( также представляет отсутствие значения и используется в качестве возвращаемого типа функций, которые генерируют или возвращают ошибку ), Void ( не возвращающий ничего из функции ), Unknown ( тип который неизвестен, тип который должен быть переопределен )
👍3
Методы массива (map, reduce, forEach, filter, find, some) ?
map - создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.
reduce - применяет функцию reducer к каждому элементу массива (слева-направо), возвращая одно результирующее значение.
forEach - выполняет указанную функцию один раз для каждого элемента в массиве
filter - создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.
find - возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции.
some - проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции
map - создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.
reduce - применяет функцию reducer к каждому элементу массива (слева-направо), возвращая одно результирующее значение.
forEach - выполняет указанную функцию один раз для каждого элемента в массиве
filter - создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.
find - возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции.
some - проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции
👍11
На связи создатель канала
Увидел заинтересованность в курсе, создал отдельный канал где будет вся информация (сколько стоит, что будет и тд. )
Переходи за информацией сюда https://t.me/+ArAQp_pk6QYxZWIy
Увидел заинтересованность в курсе, создал отдельный канал где будет вся информация (сколько стоит, что будет и тд. )
Переходи за информацией сюда https://t.me/+ArAQp_pk6QYxZWIy
👍1
Какие значения falsy и что это такое ?
Ложноподобное (falsy) значение — значение, которое становится false в булевом контексте.
JavaScript использует преобразование типов, чтобы привести значение к булевому типу, там, где это требуется (например, в условных конструкциях и циклах.
Данные которые будут преобразованы в false: false, 0 (Ноль Number (к нему также относятся 0.0, 0x0 и т.д.)), -0 (Отрицательный ноль типа Number), 0n (Ноль типа BigInt (также 0x0n). Обратите внимание, что не может быть негативного нуля типа BigInt — отрицательный 0n равняется 0n.), "", '', `` (Значение, содержащее пустую строку .), null , undefined, NaN
Ссылочные типы данных всегда true, так как они создают ссылку на себя
Ложноподобное (falsy) значение — значение, которое становится false в булевом контексте.
JavaScript использует преобразование типов, чтобы привести значение к булевому типу, там, где это требуется (например, в условных конструкциях и циклах.
Данные которые будут преобразованы в false: false, 0 (Ноль Number (к нему также относятся 0.0, 0x0 и т.д.)), -0 (Отрицательный ноль типа Number), 0n (Ноль типа BigInt (также 0x0n). Обратите внимание, что не может быть негативного нуля типа BigInt — отрицательный 0n равняется 0n.), "", '', `` (Значение, содержащее пустую строку .), null , undefined, NaN
Ссылочные типы данных всегда true, так как они создают ссылку на себя
👍4🔥1
Лучший фреймворк/библиотека для frontend ?
Anonymous Poll
79%
React
10%
Vue
8%
Angular
1%
Solid
2%
Svelte
👍4
Что такое Reflect ?
Reflect – встроенный объект, упрощающий создание прокси.
Ранее мы говорили о том, что внутренние методы, такие как [[Get]], [[Set]] и другие, существуют только в спецификации, что к ним нельзя обратиться напрямую.
Объект Reflect делает это возможным. Его методы – минимальные обёртки вокруг внутренних методов.
В частности, Reflect позволяет вызвать операторы (new, delete…) как функции (Reflect.construct, Reflect.deleteProperty, …). Это интересная возможность, но здесь нам важно другое.
Для каждого внутреннего метода, перехватываемого Proxy, есть соответствующий метод в Reflect, который имеет такое же имя и те же аргументы, что и у ловушки Proxy.
Поэтому мы можем использовать Reflect, чтобы перенаправить операцию на исходный объект.
Reflect – встроенный объект, упрощающий создание прокси.
Ранее мы говорили о том, что внутренние методы, такие как [[Get]], [[Set]] и другие, существуют только в спецификации, что к ним нельзя обратиться напрямую.
Объект Reflect делает это возможным. Его методы – минимальные обёртки вокруг внутренних методов.
В частности, Reflect позволяет вызвать операторы (new, delete…) как функции (Reflect.construct, Reflect.deleteProperty, …). Это интересная возможность, но здесь нам важно другое.
Для каждого внутреннего метода, перехватываемого Proxy, есть соответствующий метод в Reflect, который имеет такое же имя и те же аргументы, что и у ловушки Proxy.
Поэтому мы можем использовать Reflect, чтобы перенаправить операцию на исходный объект.
👍2
Как написать свой Декоратор в TypeScript ?
Декораторы являются инструментом декларативного программирования, они позволяют добавить к классам и их членам метаданные и тем самым изменить их поведение без изменения их кода.
На текущий момент декораторы являются экпериментальной функциональностью языка TypeScript, поэтому при компиляции следует указывать параметр experimentalDecorators. Например, через файл tsconfig.json
В TypeScript есть декораторы: классов, методов, аксессоров, аттрибутов, параметров
Декораторы являются инструментом декларативного программирования, они позволяют добавить к классам и их членам метаданные и тем самым изменить их поведение без изменения их кода.
На текущий момент декораторы являются экпериментальной функциональностью языка TypeScript, поэтому при компиляции следует указывать параметр experimentalDecorators. Например, через файл tsconfig.json
В TypeScript есть декораторы: классов, методов, аксессоров, аттрибутов, параметров
👍1
ТЫ НЕ ЗНАЕШЬ КАК РАБОТАЕТ EVENT LOOP
Создал свой канал на ютубе, там объясняю сложные темы простым языком
Переходи и подпишись
https://www.youtube.com/watch?v=s4MpxqD3KqA&t=20s
Создал свой канал на ютубе, там объясняю сложные темы простым языком
Переходи и подпишись
https://www.youtube.com/watch?v=s4MpxqD3KqA&t=20s
YouTube
ТЫ НЕ ЗНАЕШЬ КАК РАБОТАЕТ EVENT LOOP
Подпишись чтобы узнавать новое
Мой телеграмм https://t.me/jswrl
Бот IT собеседник https://t.me/interviewITBot
#программирование #programming #javascript #js #programmer #программист #собеседование
Мой телеграмм https://t.me/jswrl
Бот IT собеседник https://t.me/interviewITBot
#программирование #programming #javascript #js #programmer #программист #собеседование
👍5
Hoisting что это такое ?
Поднятие или hoisting — это механизм в JavaScript, в котором переменные и объявления функций, передвигаются вверх своей области видимости перед тем, как код будет выполнен.
Как следствие, это означает то, что совершенно неважно где были объявлены функция или переменные, все они передвигаются вверх своей области видимости, вне зависимости от того локальная она или же глобальная.
Стоит отметить то, что механизм “поднятия” передвигает только объявления функции или переменной. Назначения переменным остаются на своих местах.
Поднятие или hoisting — это механизм в JavaScript, в котором переменные и объявления функций, передвигаются вверх своей области видимости перед тем, как код будет выполнен.
Как следствие, это означает то, что совершенно неважно где были объявлены функция или переменные, все они передвигаются вверх своей области видимости, вне зависимости от того локальная она или же глобальная.
Стоит отметить то, что механизм “поднятия” передвигает только объявления функции или переменной. Назначения переменным остаются на своих местах.
👍6
Как работает Function Declaration ?
Function declarations загружаются до выполнения кода. Function expressions загружаются только тогда, когда интерпретатор достигает этой строки кода.
Function declarations поддерживает всплытие
Function expressions не поддерживает всплытие
На фото продемонстрировано объявление функции в стиле Function declarations
Function declarations загружаются до выполнения кода. Function expressions загружаются только тогда, когда интерпретатор достигает этой строки кода.
Function declarations поддерживает всплытие
Function expressions не поддерживает всплытие
На фото продемонстрировано объявление функции в стиле Function declarations
👍7