\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 или глобальной переменной) и возвращает один и тот
же результат для одинаковых входных данных является чистой функцией.