You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
\W - не буквы из латиницы, не знак подчёркивания и не цифра. В частности,
русские буквы принадлежат этому классу.
Юникодные свойства; в каких браузерах не работают пока что?
\p{Letter}
\p{Hex_Digit}
\p{sc=Cyrillic}
\p{Currency_Symbol} или \p{Sc}
Якоря "^" и "$"
Якоря в многострочном режиме?
Граница слова \b ?
Экранированние символа \ ?
new RegExp и \ ?
Наборы [abc] ?
Диапазоны [a-z] ?
Исключающие диапазоны [^a-z] ?
Квантификаторы +, *, ? и {n} ?
Жадный режим(по умолчанию) и Ленивый "?"
Скобочная группа
Содержимое скобок в match если нет флага "g"
Именованные группы
Скобочные группы при замене
Исключение из запоминания через "?:"
Альтернация (или) |
Опережающая проверка X(?=Y)
Негативная опережающая проверка X(?!Y)
Ретроспективная проверка
(?<=Y)X
Негативная (?
Поиск на заданной позиции, флаг "y" и regexp.lastIndex
Event loop
Что такое:
event loop
call stack
callback queue( macrotask queue)
microtask queue
heap
runtime
concurrency
render queue
?
Race conditions
Что это?
Разное
eval()
Мутабельность данных и иммутабельность
Конспект
Event loop
Call stack - структура данных которая хранит инфу о том где мы сейчас в программе находимся
Размер Call stack 2^14 (16384). После переполнения очищается
Первая функция call stack - main() и она анонимная
WebAPI(C++API для бекенд) - по сути потоки
Когда какой-то WebAPI заканчивает работу, он помещает callback в callback queue
Если call stack пуст, то event loop добавляет в него все задачи Microtask queue и одну очередную задачу из macrotask queue
setTimeout(cb, 0) - здесь ноль не равен нулю, а 4.7 миллисекундам
Render queue
Алгоритм
requestAnimationFrame (safari - пидорас и ставит rAF последним)
Style calculation
Layout calculation
Block painting (отрисовка пикселей)
Функции
Контекст выполнения (execution context).
Специальная внутренняя структура данных, которая содержит информацию о вызове функции.
Она включает в себя конкретное место в коде, на котором находится интерпретатор,
локальные переменные функции, значение this (мы не используем его в данном примере) и прочую служебную информацию.
Один вызов функции имеет ровно один контекст выполнения, связанный с ним.
Когда функция производит вложенный вызов, происходит следующее:
Выполнение текущей функции приостанавливается.
Контекст выполнения, связанный с ней, запоминается в специальной
структуре данных – стеке контекстов выполнения.
Выполняются вложенные вызовы, для каждого из которых создаётся свой контекст выполнения.
После их завершения старый контекст достаётся из стека, и выполнение внешней функции
возобновляется с того места, где она была остановлена.
Замыкание – это функция, которая запоминает свои внешние переменные и может получить к ним доступ.
В некоторых языках это невозможно, или функция должна быть написана специальным образом, чтобы получилось
замыкание. Но, как было описано выше, в JavaScript, все функции изначально являются замыканиями
(есть только одно исключение, про которое будет рассказано в Синтаксис "new Function").
То есть, они автоматически запоминают, где были созданы, с помощью скрытого свойства [[Environment]]
и все они могут получить доступ к внешним переменным.
Когда на собеседовании фронтенд-разработчик получает вопрос: «что такое замыкание?», – правильным
ответом будет определение замыкания и объяснения того факта, что все функции в JavaScript являются
замыканиями, и, может быть, несколько слов о технических деталях: свойстве [[Environment]] и о том,
как работает лексическое окружение.
Чистая функция – На фундаментальном уровне, любая функция, которая не изменяет входные данные,
не зависит от внешнего состояния (базы данных, DOM или глобальной переменной) и возвращает один и тот
же результат для одинаковых входных данных является чистой функцией.