- •Типы данных в es2015. Какие есть типы, какие из них примитивные, в чём разница и каковы особенности? Для каких есть литералы? Оператор typeof.
- •Тип данных Number. Его особенности, свойства, методы.
- •Тип данных String. Его особенности, свойства, методы. Строковые шаблоны.
- •Доступ к символам
- •Изменения строк
- •Смена регистра
- •Поиск подстроки
- •Отрицательные аргументы
- •Кодировка Юникод
- •Тип данных Symbol. Его особенности, свойства, методы.
- •Объявление
- •Глобальные символы
- •Использование символов
- •Приведение типов, неявное и явное. Взаимодействие типов с операторами.
- •Строковое преобразование
- •Численное преобразование
- •Специальные значения
- •Логическое преобразование
- •Встроенные модальные окна.
- •Массивы, их методы, особенности.
- •Методы pop/push, shift/unshift
- •Типизированные массивы. В чём их отличие, зачем они нужны, как с ними работать?
- •Типизированные массивы
- •Условные операторы, операторы циклов, переходы и метки.
- •Оператор вопросительный знак „?“
- •Варианты объявления функций в es2015, чем они отличаются?
- •Параметры по умолчанию
- •Оператор spread вместо arguments
- •Деструктуризация в параметрах
- •Область видимости, понятие замыкания.
- •Специальные значения this и arguments внутри функции.
- •Функции-стрелки не имеют своего this. Внутри функций-стрелок – тот же this, что и снаружи.
- •Методы и свойства функций. Как с ними работать и когда их применять?
- •Что такое каррирование, как оно работает и зачем нужно? Что такое мемоизация?
- •Работа с объектом типа Date.
- •Создание
- •Получение компонентов даты
- •Установка компонентов даты
- •Автоисправление даты
- •Преобразование к числу, разность дат
- •Форматирование и вывод дат
- •Метод Date.Now()
- •Объект как хеш-таблица.
- •Конфигурируемые свойства объекта.
- •Атрибуты свойств
- •Дескрипторы свойств
- •Перечислимые свойства объекта
- •Иммутабельность объектов. Копирование объектов. Что такое иммутабельность?
- •Копирование по ссылке
- •Особенности системы наследования объектов.
- •Наследование свойств
- •Наследование "методов"
- •Объектно-ориентированное программирование, принципы, парадигмы.
- •Псевдо-классовое наследование в es5 и es2015. Как организуется, на чём базируется, что изменилось в es2015.
- •Функциональное наследование.
- •Встроенные коллекции в es2015.
- •Обработка исключений. Принципы работы и когда следует использовать.
- •Таймеры и периодические вызовы.
- •Отмена исполнения clearTimeout
- •Цикл событий, принципы работы асинхронности.
- •Промисы (promise), назначение и особенности работы. Использование async/await.
- •Пример с setTimeout
- •Параллельное выполнение
- •Как мы будем их использовать?
- •Генераторы (generators). В чём заключаются, как работают, когда могут применяться?
- •Создание генератора
- •Генератор – итератор
- •Yield – дорога в обе стороны
- •Асинхронный код
- •Синтаксис диалекта регулярных выражений, доступный в es2015. Метасимволы, группировки, обратные ссылки, квантификаторы, символьный класс и выбор, позиционные проверки.
- •Использование регулярных выражений в конструкциях языка. Методы и свойства объекта регулярных выражений, методы строк, результаты операций.
Тип данных String. Его особенности, свойства, методы. Строковые шаблоны.
В JavaScript любые текстовые данные являются строками. Не существует отдельного типа «символ», который есть в ряде других языков. Внутренним форматом строк, вне зависимости от кодировки страницы, является 16-разрядный Юникод (Unicode).
Создание строк
Строки создаются при помощи двойных или одинарных кавычек:
let text = "моя строка";
let anotherText = 'еще строка';
Специальные символы
Строки могут содержать специальные символы. Самый часто используемый из таких символов – это «перевод строки».
Есть и более редкие символы, вот их список:
-
Специальные символы
Символ
Описание
\b
Backspace
\f
Form feed
\n
New line
\r
Carriage return
\t
Tab
\uNNNN
Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` - юникодное представление символа копирайт ©
Экранирование специальных символов
Экранирование служит исключительно для правильного восприятия строки JavaScript. В памяти строка будет содержать сам символ без '\'.
\0 — ноль-символ
\' — одинарная кавычка
\" — двойная кавычка
\\ — обратный слэш
\b — забой
\f — разрыв страницы
\n — новая строка
\r — возврат каретки
\t — табуляция
\v — вертикальная табуляция
\uFFFF (4 шестнадцатеричных цифры) — символ по Unicode-коду
\u{F} … \u{FFFFFF} — расширенный юникод
\xFF — символ по коду ASCII Latin-1
Многострочность
Строка однострочная. Для многострочной можно в конце поставить «`\`» (перевод строки игнорируется):
'Пример текста\
занимающего две строки'
=== 'Пример текста занимающего две строки' // true
Или использовать шаблоны (перевод строки учитывается):
`Пример текста
занимающего две строки`
=== 'Пример текста\nзанимающего две строки' // true
Операции
Объединение строк — оператор «+»:
'Hello' + ' world' // 'Hello world'
Сравнение происходит побуквенно по алфавиту (таблице символов):
'abc' === 'abc'
'abc' === 'a' + 'b' + 'c'
'a' < 'b' // true
'c' < 'b' // false
'abcd' < 'abcd' // false
'abcd' < 'abdc' // true
Методы и свойства
Свойство length
Одно из самых частых действий со строкой – это получение ее длины:
‘text’.length; // 4
Доступ к символам
charAt( index: number ): string
— получить символ в заданной позиции (от нуля). Если запрошенная позиция выходит за пределы строки, вернётся пустая строка.
'text'.charAt( 1 ); // 'e'
'text'.charAt( -1 ); // ''
'text'.charAt( 10 ); // ''
'text'.charAt( 0 ); // 't'
Также для доступа к символу можно использовать квадратные скобки:
‘text’ [0]; // "t"
Разница между этим способом и charAt заключается в том, что если символа нет – charAt выдает пустую строку, а скобки – undefined:
"".charAt(0); // пустая строка
"" [0]; // undefined
