JavaScript
==========

**JavaScript** (**JS**) — это легковесный интерпретируемый (или JIT-компилируемый) язык программирования с функциями первого класса. Наиболее широкое применение находит как язык сценариев веб-страниц, но также используется и в других программных продуктах, например, Node.js или Apache CouchDB. JavaScript это прототипно-ориентированный, мультипарадигменный язык с динамической типизацией, который поддерживает объектно-ориентированный, императивный и декларативный (например, функциональное программирование) стили программирования. Подробнее о JavaScript.

Эта часть сайта посвящена самому языку JavaScript, и она не затрагивает тонкостей, связанных с веб-страницами или окружением, в котором исполняется JavaScript. Информация об API, относящихся к веб-страницам, находится в разделах, посвящённых Веб-API и DOM (en-US).

Стандартом языка JavaScript является ECMAScript (en-US). По состоянию на 2012 год, все современные браузеры полностью поддерживают ECMAScript 5.1. Старые версии браузеров поддерживают по крайней мере - ECMAScript 3. 17 июня 2015 года состоялся выпуск шестой версии ECMAScript. Эта версия официально называется ECMAScript 2015, которую чаще всего называют ECMAScript 2015 или просто ES2015. С недавнего времени стандарты ECMAScript выпускаются ежегодно. Эта документация относится к последней версии черновика, которой является ECMAScript 2018.

Не следует путать JavaScript c языком программирования Java. И "Java", и "JavaScript" являются торговыми марками или зарегистрированными торговыми марками Oracle в США и других странах. Однако, у обоих языков различный синтаксис, семантика и применение.

Учебные материалы
-----------------

Научитесь программировать на JavaScript вместе с нашим руководством.

### Для абсолютных новичков

Загляните в наш Учебный План, если вам хочется изучить JavaScript, но у вас нет опыта в JavaScript или программировании. Доступные разделы:

Первые шаги в JavaScript

Отвечаем на такие вопросы, как "что такое JavaScript?", "как он выглядит?", "и что он может делать?", а также обсуждаем основные возможности JavaScript, такие, как переменные, строки, числа и массивы.

Структурные элементы JavaScript

Продолжаем наше изучение главных возможностей JavaScript, обращаем наше внимание на самые часто встречающиеся блоки кода, такие, как условные выражения, циклы, функции и события.

Введение в объекты JavaScript

Объектно-ориентированная природа JavaScript важна для понимания, если вы хотите углубить знание языка и писать более эффективный код. Поэтому мы подготовили модуль, который поможет вам в этом.

Асинхронный JavaScript

Обсуждение асинхронного JavaScript: почему это так важно, как эта возможность языка может использована для обработки потенциальных блокирующих операций, как, например получение данных с сервера.

Клиентские (браузерные) веб-API

Когда вы пишите клиент веб-сайтов или приложений на JavaScript, вы не далеко уйдёте без использования API – интерфейсов для взаимодействия с браузером и операционной системой, на которой запущен сайт, или даже для операций с данными, полученными от других веб-сайтов и сервисов. В этом цикле статей мы разбираемся, что такое API и как использовать некоторые самые распространённые API, которые вам встретятся при разработке.

### Руководство по JavaScript

Руководство по JavaScript

Более подробное руководство по языку программирования JavaScript, нацеленное на тех, кто уже имеет опыт программирования на JavaScript или на любом другом языке.

### Средний уровень

Понимание JavaScript-фреймворков для фронтенда

JavaScript-ффреймворки являются неотъемлемой частью современной веб-разработки,предоставляя разработчикам проверенные и протестированныеинструменты для создания масштабируемых и интерактивных веб-приложений. Многиесовременные компании используют фреймворки для своих решений, поэтому многие задачи связанные с разработкой клиентской части веб-приложений теперь требуют опыта работы с ними.

Повторное введение в JavaScript

Обзор для тех, кто *думает*, что знает JavaScript.

Структуры данных JavaScript

Обзор существующих структур данных в JavaScript.

Операторы сравнения и тождественности

JavaScript предоставляет три различных оператора сравнения значений: строгое равенство `===`, с приведением типов `==` и метод `Object.is()`.

Замыкания

Замыкания это сочетание функции и лексического окружения в котором она была определена.

### Продвинутый уровень

Наследование и цепочка прототипов

Статья разъясняет бытующие заблуждения и недооцененность наследования, основанного на прототипах.

Строгий режим — "use strict"

Строгий режим говорит о том, что вы не можете использовать какую-либо переменную до её объявления. Это ограниченный вариант ECMAScript 5, для более быстрой производительности и простой отладки.

Типизированные массивы

Типизированные массивы предоставляют механизм для работы с необработанными двоичными данными в JavaScript.

Управление памятью

Жизненный цикл памяти и сборка мусора в JavaScript.

Модель параллелизма (мультипоточности) и цикл событий

В JavaScript есть модель параллелизма, основанная на "цикле событий".

Введение в использование XPath в JavaScript (en-US)

Этот документ описывает интерфейс для использования XPath (en-US) в JavaScript напрямую, внутри расширений и на веб-сайтах.

Справочник
----------

Подробный справочник по JavaScript.

Стандартные встроенные объекты

Узнайте о стандартных встроенных объектах `Array`, `Boolean`, `Date`, `Error`, `Function`, `JSON`, `Math`, `Number`, `Object`, `RegExp`, `String`, `Map` (en-US), `Set`, `WeakMap` , `WeakSet` и других.

Выражения и операторы

Узнайте о поведении таких операторов в JavaScript, как `instanceof`, `typeof`, `new`, `this`, приоритете операторов и многом другом.

Инструкции и объявления

Узнайте о `do-while`, `for-in`, `for-of`, `try-catch`, `let`, `var`, `const`, `if-else`, `switch` и многих других выражениях и ключевых словах в JavaScript.

Функции

Узнайте, как работать с функциями в JavaScript, чтобы разрабатывать свои приложения.

Инструменты и дополнительные ресурсы
------------------------------------

Полезные инструменты для написания и отладки вашего **JavaScript** кода.

Инструменты разработчика Firefox

Простой редактор JavaScript, Веб-консоль, JavaScript Профайлер (en-US), Отладчик и другие.

JavaScript шеллы

JavaScript шеллы позволяют быстро проверять фрагменты JavaScript-кода.

TogetherJS

Объединение усилий стало проще. Добавляя TogetherJS на вашу веб-страницу, ваши пользователи могут помочь другу-другу в реальном времени!

Stack Overflow

Вопросы по JavaScript на Stack Overflow.

Версии JavaScript и информация о релизах

Просмотрите историю возможностей JavaScript и их статус.

JSFiddle

Редактируйте JavaScript, CSS, HTML и получайте живые результаты. Используйте экспериментальные ресурсы и взаимодействуйте с вашей командой онлайн.


Plunker

Plunker - это онлайн-сообщество для создания, обмена и совместной работы над идеями, касающимися веб-разработки. Редактируйте ваши JavaScript, CSS, HTML файлы, смотрите результат их выполнения и организуйте их в файловую структуру.

JSBin

JS Bin это инструмент с открытым исходным кодом для отладки и совместной разработки.

Codepen

Codepen ещё одна платформа для совместной веб-разработки, дающие результат в реальном-времени.

StackBlitz

StackBlitz - это "песочница"/инструмент отладки, где вы можете размещать полновесные приложения написанные на React, Angular, т др.