Основной учебник JavaScript
Основы
Введение
Запуск JavaScript
Первая программа на JavaScript
Разбор кода программы
Дальнейшие примеры
Файлы со скриптами
Несколько файлов
Замечание
Кеширование файлов
Строгий режим
Комментарии
Переменные
Использование переменных
Объявление нескольких переменных
Изменения значений переменных
Несколько let для одной переменной
Математические операции с числами
Математические операции с переменными
Приоритет математических операций
Равный приоритет
Группирующие скобки
Дроби
Отрицательные числа
Плюс перед переменными
Остаток от деления
Возведение в степень
Приоритет возведения в степень
Строки
Сложение строк
Длина строки
Шаблонные строки
Многострочность
Специальные значения
Значение undefined
Значение null
Значения true и false
Значение NaN
Infinity и -Infinity
Консоль
Тип данных в консоли
Ошибки в консоли
Константы
Автоматическое преобразование типов
Преобразование к числу
Короткое преобразование к числу
Преобразование некорректных чисел
Выделение чисел
Преобразование к строке
Применение преобразования к строке
Преобразование логического типа
Преобразование к логическому типу
Символы строки
Неизменяемость строк
Последний символ строки
Строки с цифрами
Обращение к цифрам числа
Операции для изменения переменной
Сокращенные операции в JavaScript
Инкремент и декремент
Префиксный и постфиксный тип
Неточные вычисления
Функция prompt
Проблема с типами в prompt
Вывод в документ
Практика на поиск ошибок
Практика на операции
Практика на формулы
Массивы
Введение в массивы
Получение элементов
Длина массива
Изменение элементов
Перезапись элементов массива
Инкремент и декремент
Добавление элементов по ключам
Разреженные массивы
Добавление элементов через push
Ключи из переменных
Оператор delete
Практика на поиск ошибок
Объекты
Введение в объекты
Вывод всего объекта
Строковые ключи объектов
Свойства объектов
Ограничения на ключи объектов
Изменение элементов
Добавление элементов
Неупорядоченность объектов
Массив ключей объекта
Длина объекта
Ключи из переменных
Ошибка обращения к элементу
Ошибка обращения к свойству
Вычисляемые свойства
Оператор in
Оператор delete
Типизация объектов
Массивы как объекты
Отличаем массивы от объектов
Объекты и примитивы
Передача объектов по ссылке
Константы
Подход программирования через константы
Практика на поиск ошибок
Условия
Конструкция if-else
Операторы больше и меньше
Проверка на равенство
Проверка на неравенство
Сравнение переменных
Равенство строк
Равенство строк и чисел
Равенство по значению и типу
Неравенство по значению и типу
Логическое И
Логическое ИЛИ
Приоритет логических операторов
Группировка условий
Инвертирование логических выражений
Условия с булевыми значениями
Сравнение значений с булевым типом
Сокращенная форма проверки на истину
Сокращенная форма проверки на ложь
Общая сокращенная форма проверки
Сложные условия в сокращенной форме
Необязательность конструкции else
Необязательность фигурных скобок
Проблема необязательности скобок
Конструкция else if
Вложенные конструкции if-else
Конструкция switch-case
Необязательность break
Тернарный оператор
Логические операции
Функция confirm
Область видимости
Нюансы области видимости
Проверка частей часа
Проверка длины строк и массивов
Проверка символов строки
Проверка цифр числа
Проверка остатка от деления
Практика на поиск ошибок
Практика
Циклы
Введение
Цикл for-of
Цикл for-in
Цикл while
Цикл for
Цикл for для массивов
Условия в циклах
Суммирование чисел
Суммирование элементов массивов
Формирование строк
Цифры числа
Инструкция break
Инструкция continue
задачи
Вложенные циклы
Область видимости
задача
Вложенные циклы и область видимости
задачи
Заполнение массивов
Изменение массивов
Заполнение объектов
Изменение объектов
Работа с флагами
Советы по написанию кода
Советы по отладке кода
Практика на поиск ошибок
Практика
Многомерность
Многомерные массивы
Трехмерный массив
Произвольные массивы
Перебор многомерных массивов
Перебор через обычный for
Заполнение многомерных массивов
Проблемы при заполнении многомерных массивов
Заполнение многомерных массивов по порядку
Многомерные объекты
Перебор многомерных объектов
Многомерные структуры
Перебор многомерных структур
Массив объектов
Ключи из переменных
Добавление элементов в массивы
Добавление элементов в объекты
Стандартные методы
Степени
Функции округления
Экстремумы
Рандом
Модули
Регистр символов
Вырезание строк
Поиск по строкам
Замена в строках
Части строк
Концевые элементы
Части массивов
Вырезание массивов
Поиск по массивам
Ключи объектов
Практика на поиск ошибок
Пользовательские функции
Введение
Параметры функции
Несколько параметров
Параметры-переменные
Необязательные параметры
Инструкция return
Последовательный вызов функций
Тонкое место return
Цикл и return
Применение return в циклах
Прием работы с return
Флаги в функциях
Логические операторы в функциях
Советы по функциям
поработать еще
Практика на поиск ошибок
Практика на функции
Переменные функций
Глобальные переменные
Локальные переменные
Совпадение имен переменных
Изменение глобальных переменных
Глобальные переменные и параметры функций
Совпадение имен с параметрами
Параметры-объекты
Типы функций
Исходный код функции и результат
Функция как переменная
Запись функции в другую переменную
Присваивание функций в переменные
Совпадение имени функции и переменной
Типы объявлений
Разница объявлений функции
Точка с запятой при объявлении функций
Нюансы функциональных выражений
Функция с именем, но Function Expression
Именованные функциональные выражения
Как проверить тип функции
Выражение слева
Выражение справа
Массив с функциями
Объект с функциями
Применение объекта с функциями
Вложенные функции
Передача функций параметрами
Именованные функции
Параметры передаваемых функций
Передача числа параметром
Применение
Внутренние функции
Область видимости вложенных функций
Параметры внешней функции
Параметры внешней и внутренней функций
Одноименные параметры
Функция, возвращающая функцию
Любой уровень вложенности
Параметры возвращаемой функции
Функции-коллбэки
Нюансы коллбэков
Стрелочные функции
Применение стрелочных функций
Замыкания
Доступ к внешним переменным
Лексическое окружение функций
Применение лексического окружения
Введение в замыкания
Счетчик на замыканиях
Нюанс локальная переменная
Нюанс глобальная переменная
IIFE
Вызов функции на месте
Присваивание функции в переменную
Применение вызова функции на месте
Круглые скобки
Параметры
Множественные вызовы
Подводные камни
Точка с запятой для безопасности
Замыкания и IIFE
Рекурсия
Введение
Пример с параметром
Сумма элементов массива при рекурсии
Многомерные структуры
Сумма элементов массива
Манипуляции со структурами
Перебирающие методы
Метод map
Метод forEach
Метод filter
Метод every
Метод some
Метод find
перевод, задачи
Метод reduce
перевод, задачи
Оператор spread
Введение
Более сложные примеры
переписать
Экстремальные значения массива
Слияние массивов
Разбиение строк
Разбиение чисел
Оператор rest
Разбить на массивы и объекты - два разделаДеструктуризация
Деструктуризация массивов
Массив из функции
Пропуск элементов массива
Лишние значения массива
Остаток массива
Значения по умолчанию для массивов
Функции по умолчанию для массивов
Объявление переменных для массивов
Деструктуризация объектов
Имена переменных для объектов
Значения по умолчанию для объектов
Переменные и значения по умолчанию для объектов
Объявление переменных для объектов
Параметры функций
Деструктуризация oбъектов параметров функций
Время
Работа с объектом Date
Форматирование даты
Смена формата даты
Получение дня недели
Вывод даты словом
Установка времени
Формат timestamp
Разность между timestamp
Разность объектов с датами
Автоматическая корректировка дат
Нахождение последнего дня месяца
Определение високосного года
Проверка корректности даты
Получение дня текущего года
День следующего или предыдущего месяца
День следующего или предыдущего года
День следующего или предыдущего месяца
Разность моментов
Момент времени дня
Начало дня
Конец дня
Циклическая проверка моментов времени
Практика на получение моментов времени
Строковое сравнение дат
Сравнение даты без года
Попадание даты в промежуток
Сравнение объектов с датой
Введение в DOM
Введение
DOM элементы
Получение DOM элементов
Сложные селекторы DOM элемента
Привязывание обработчиков
Именованные обработчики
Один обработчик к элементам
Обработчики одного события
Обработчики разных событий
Текст элемента
HTML код элемента
Атрибуты тегов как свойства
Работа с текстовыми полями
Фокус текстовых полей
Атрибуты-исключения
Цепочки методов и свойств
Преимущества и недостатки цепочек
Объект this
Преимущество this
Получение группы элементов
Именованные обработчики в цикле
Анонимные обработчики в цикле
Отвязывание обработчиков событий
Отвязывание обработчиков в цикле
Отвязывание анонимных обработчиков
Советы по написанию кода
Практика на поиск ошибок
Практикум
Атрибуты
Метод получения атрибутов
Метод установки атрибутов
Метод удаления атрибутов
Метод проверки атрибутов
Пользовательские атрибуты
Имена атрибутов с дефисами
Обращение к атрибутам через методы
Масссив CSS классов
Добавление CSS классов
Удаление CSS классов
Проверка CSS классов
Тогглинг CSS классов
Стилизация
Стилизация через атрибут style
Стилизация свойств с дефисом
Исключение при стилизации элементов
Стилизация через CSS классы
Преимущество стилизации с помощью CSS классов
Применение cтилизации
Поиск
Нахождение потомков элементов
Нахождение родителей элементов
Поиск всех родителей элементов
Поиск соседей элементов
Поиск элемента по id
Поиск элемента по имени тега
Поиск элемента по имени класса
Поиск внутри элемента
Узлы
Формы
Работа с текстареа
Блокировка элементов
Работа с чекбоксами
Чередование атрибутов без значений
Работа с радиокнопками
Событие change
Событие input
Методы focus и blur
Практика на поиск ошибок
Выпадающие списки
Работа с выпадающими списками
Атрибут value в выпадающих списках
Изменение выбранного пункта списка
Номер выбранного пункта списка
Получение пунктов выпадающего списка
Пункты как массив
Работа с пунктами выпадающего списка
Выбор пункта списка
Получение выбранного пункта
Поиск ошибок в коде с формами
Объект Event
Основы работы с объектом Event
Координаты события
Тип события
Элемент события
Получение нажатых клавиш
Отслеживание клавиш-модификаторов
Отмена действия по умолчанию
Всплытие событий
Целевой элемент при всплытии
Прекращение всплытия событий
Несколько обработчиков на элементе
Немедленное прекращение всплытия
Применение прекращения всплытия событий
Погружение событий
Обработчики на новые элементы
Делегирование событий
Универсальное делегирование событий
Контекст
Основы работы с контекстом
Контекст непривязанной функции
Потеря контекста
Решение проблемы с контекстом
Решение через переменную
Решение через параметр
Решение через стрелочную функцию
Метод call
Метод call с параметрами
Метод apply
Метод bind
Таймеры
Запуск таймера
Счетчик на таймере
Остановка таймера
Кнопки для запуска
Многократный запуск
Кнопки для остановки
Работа с DOM
Таймеры и потеря контекста
Практика на таймеры и DOM
Задержка перед выполнением
Таймер через задержку
Манипулирование элементами
Создание и вставка элементов
Навешивание событий при вставке
Создание элементов в цикле
Навешивание обработчиков в цикле
Удаление элементов
Вставка с краю
Вставка перед
Смежная вставка
Смежная вставка тегов
Клонирование элементов
еще задач
Проверка элементов
Практика
Создание элементов из массива
практика не разбита
Практика на создание списков ul
Создание таблиц
Последовательное заполнение таблиц
Создание таблицы из массива
Создание таблицы из массива объектов
Добавление рядов и колонок в таблицу
Изменение ячеек таблицы
Удаление новых элементов
Ссылка на удаление элемента
Создание ссылок на удаление
Редактирование отдельного элемента
Прячем текст при редактировании
Редактирование в наборе элементов
Удаление и редактирование
Стилизация элементов
Кнопки для скрытия и показа элемента
Много элементов с кнопками показа
Активация элементов
Чередование стилей активации
Практика на изменение элементов
Функции и DOM
Функции для работы с DOM элементом
Функции для работы с группой элементов
Передача коллбэка для работы с DOM
Передача порядкового номера в коллбэк
Передача элемента параметром функции
Передача группы элементов параметрами
Функция для создания HTML таблиц
Возврат таблицы из функции
Функция для создания таблицы из массива