- •Типы данных в 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. Метасимволы, группировки, обратные ссылки, квантификаторы, символьный класс и выбор, позиционные проверки.
- •Использование регулярных выражений в конструкциях языка. Методы и свойства объекта регулярных выражений, методы строк, результаты операций.
Встроенные модальные окна.
alert
Синтаксис:
alert(сообщение);
alert выводит на экран окно с сообщением и приостанавливает выполнение скрипта, пока пользователь не нажмёт «ОК». Окно сообщения, которое выводится, является модальным окном. Слово «модальное» означает, что посетитель не может взаимодействовать со страницей, нажимать другие кнопки и т.п., пока не разберётся с окном. В данном случае – пока не нажмёт на «OK».
prompt
Функция prompt принимает два аргумента:
result = prompt(title, default);
Она выводит модальное окно с заголовком title, полем для ввода текста, заполненным строкой по умолчанию default и кнопками OK/CANCEL. Пользователь должен либо что-то ввести и нажать OK, либо отменить ввод кликом на CANCEL или нажатием Esc на клавиатуре. Вызов prompt возвращает то, что ввёл посетитель – строку или специальное значение null, если ввод отменён.
confirm
Синтаксис:
result = confirm(question);
confirm выводит окно с вопросом question с двумя кнопками: OK и CANCEL. Результатом будет true при нажатии OK и false – при CANCEL(Esc).
Массивы, их методы, особенности.
Массив – разновидность объекта, которая предназначена для хранения пронумерованных значений и предлагает дополнительные методы для удобного манипулирования такой коллекцией. Они обычно используются для хранения упорядоченных коллекций данных, например – списка товаров на странице, студентов в группе и т.п.
Объявление
var array = [];
var array = [0, 1, 2, 3];
var array = new Array(); // []
var array = new Array( 0, 1, 2, 3 ); // [0, 1, 2, 3]
var array = new Array( 2 ); // [undefined, undefined]
Элементы нумеруются, начиная с нуля. Чтобы получить нужный элемент из массива – указывается его номер в квадратных скобках:
var fruits = ["Яблоко", "Апельсин", "Слива"];
fruits[0]; // Яблоко
fruits[1]; // Апельсин
fruits[2]; // Слива
Элемент можно всегда заменить:
fruits[2] = 'Груша'; // ["Яблоко", "Апельсин", "Груша"]
Или добавить:
fruits[3] = 'Лимон'; // ["Яблоко", "Апельсин", "Груша", "Лимон"]
В массиве может храниться любое число элементов любого типа. В том числе, строки, числа, объекты:
var arr = [ 1, 'Имя', { name: 'Петя' }, true ];
Свойство length
— индекс последнего элемента + 1.
var array = [0, 1, 2, 3];
array.length; // 4
При уменьшении length массив укорачивается. Причем этот процесс необратимый, т.е. даже если потом вернуть length обратно – значения не восстановятся.
array.length = 2;
array.toString(); // [0, 1]
array.length = 4;
array.toString(); // [0, 1, undefined, undefined]
Array.isArray( obj ) — проверить, является ли объект массивом.
Методы pop/push, shift/unshift
Одно из применений массива – это очередь. В классическом программировании так называют упорядоченную коллекцию элементов, такую что элементы добавляются в конец, а обрабатываются – с начала. В реальной жизни эта структура данных встречается очень часто. Например, очередь сообщений, которые надо показать на экране.
Очень близка к очереди еще одна структура данных: стек. Это такая коллекция элементов, в которой новые элементы добавляются в конец и берутся с конца.
Для того, чтобы реализовывать эти структуры данных, и просто для более удобной работы с началом и концом массива существуют специальные методы.
pop()
Удаляет последний элемент из массива и возвращает его:
var fruits = ["Яблоко", "Апельсин", "Груша"];
fruits.pop(); // "Груша"
fruits; // Яблоко, Апельсин
push()
Добавляет элемент в конец массива:
var fruits = ["Яблоко", "Апельсин"];
fruits.push("Груша");
fruits; // Яблоко, Апельсин, Груша
shift()
Удаляет из массива первый элемент и возвращает его:
var fruits = ["Яблоко", "Апельсин", "Груша"];
fruits.shift(); //Яблоко
fruits; // Апельсин, Груша
unshift()
Добавляет элемент в начало массива:
var fruits = ["Апельсин", "Груша"];
fruits.unshift('Яблоко');
fruits; // Яблоко, Апельсин, Груша
split(separator)
- позволяет превратить строку в массив, разбив ее по разделителю separator.
var names = 'Маша, Петя, Марина, Василий';
var arr = names.split(', ');
У метода split есть необязательный второй аргумент – ограничение на количество элементов в массиве:
"a,b,c,d".split(',', 2); // a,b
Вызов split с пустой строкой разобьёт по буквам:
"тест".split(''); // т,е,с,т
join( [separator = ','] )
— вовзращает строку, состоящую из элементов массива, объединённых используя separator (по умолчанию `','`).
var array = ['a', 'b', 'c'];
array.join(); // 'a,b,c'
array.join( '' ); // 'abc'
delete
var arr = ["Я", "иду", "домой"];
delete arr[1]; // ["Я", undefined, "домой"];
Оператор delete не удаляет элемент, только значение.
splice( index , howMany[, element1[, ...[, elementN]]] )
— изменяет массив, добавляя и/или удаляя элементы. Перестраивает индексы.
index — позиция, с которой выполнять изменения. Если отрицательный, то отсчитывает от конца.
howMany — сколько последующих символов удалить (может быть нулём).
element1, …, elementN — добавляемые после позиции элементы (могут быть упущены).
Возвращает массив удалённых элементов (если ни один не удалён — то пустой массив).
var array = ['a', 'b', 'c', 'd', 'e', 'f'];
array.splice( 2, 2 ); // ['c', 'd']
array; // [ 'a', 'b', 'e', 'f' ]
array.splice( 2, 0, 'c', 'd' ); // []
array; // [ 'a', 'b', 'c', 'd', 'e', 'f' ]
slice( begin, end )
— возвращает копию участка массива от begin (включая) до end (не включая), или до конца массива, если end не указан. Отрицательные индексы отсчитываются от конца. Исходный массив при этом не меняется.
var array = ['a', 'b', 'c', 'd', 'e', 'f'];
array.slice( 2, -1 ); // [ 'c', 'd', 'e' ]
array; // [ 'a', 'b', 'c', 'd', 'e', 'f' ]
sort( [compareFunction] )
— выполнить сортировку элементов массива.
compareFunction( a, b ) — функция сортировки, если не задана, то сортирует значения как строки (не как числа).
[1, 2, 11].sort(); // [ 1, 11, 2 ]
[1, 2, 11].sort( function( a, b ) { return a - b; } ); // [ 1, 2, 11 ]
reverse()
— изменяет массив, переворачивая порядок элементов. Возвращает новое значение массива.
var array = ['a', 'b', 'c'];
array.reverse(); // [ 'c', 'b', 'a' ]
array; // [ 'c', 'b', 'a' ]
concat( value1, value2, ..., valueN )
— возвращает новый массив, состоящий из оригинального массива с добавлением перечисленных элементов.
value может быть значением или массивом. Если массив, то добавляются значения этого массива.
var arr = [1, 2];
arr.concat(3, 4); // 1,2,3,4
var arr = [1, 2];
arr.concat([3, 4], 5); // 1,2,3,4,5
indexOf( searchElement[, fromIndex = 0] )
— индекс первого вхождения элемента searchElement в массиве, начиная с позиции fromIndex, если задана. Если элемента нет, возвращается -1. Производится строгое сравнение (===).
var arr = [1, 0, false];
arr.indexOf(0); // 1
arr.indexOf(false); // 2
arr.indexOf(null); // -1
lastIndexOf( searchElement[, fromIndex = .length] )
— индекс последнего вхождения элемента searchElement в массиве, начиная с позиции fromIndex, если задана. Если элемента нет, возвращается -1. Производится строгое сравнение (===).
Перебирающие методы
forEach( callback[, thisArg] )
— используется для перебора массива. Он для каждого элемента массива вызывает функцию callback. Ничего не возвращает. thisArg повзоляет указать контекст вызова.
Функция может принимать аргументы:
* value — текущий элемент массива
* index — индекс текущего элемента
* array — сам массив
map( callback[, thisArg] )
— создаёт новый массив, состоящий из результата вызова функции callback на элементах оригинального массива.
filter( callback[, thisArg] )
— создаёт новый массив из элементов, прошедших проверку функцией callback (если функция для них вернула true).
every( callback[, thisArg] )
— проверить, что каждый элемент массива соответствует проверке, выполняемой функцией callback. Если на одном из значений функция вернёт значение, соответствующее false, то метод прекратит работу и вернут false, если же все элементы пройдут проверку, то вернётся true.
some( callback[, thisArg] )
— проверить, что хотя бы один элемент массива соответствует проверке, выполняемой функцией callback. Если на одном из значений функция вернёт значение true, то метод прекратит работу и вернут true, если же ни один элемент не пройдёт проверку, то вернётся false.
reduce( callback[, initialValue] )
— свести массив к скалярной величине используя функцию callback. С помощью initialValue можно указать изначальное значение. Если initialValue не указано, то оно равно первому элементу массива, а перебор начинается со второго.
Аргументы функции callback(previousValue, currentItem, index, arr):
previousValue – последний результат вызова функции, он же «промежуточный результат».
currentItem – текущий элемент массива, элементы перебираются по очереди слева-направо.
index – номер текущего элемента.
arr – обрабатываемый массив.
Например, мы хотим получить сумму всех элементов массива:
var arr = [1, 2, 3, 4, 5];
arr.reduce(function(sum, current) {return sum + current;}, 0); // 15
reduceRight( callback[, initialValue] )
— порядок справа на лево.
