Глоссарий

  • codeAJAX
    Asyncronous JavaScript and XML — это технология обращения к серверу без перезагрузки страницы. Способ построения интерактивных пользовательских web-приложений посредством фонового обмена информацией браузера с сервером. Термин AJAX обозначил Джесси Джеймс Гаррет в 2005 году. Первыми приложениями, использующими данную технологию, стал сервис карт Google Maps и почтовый клиент Gmail.

    Преимущества:

    1. экономия трафика пользователя;
    2. снижение нагрузки на сервер;
    3. ускорение реагирования интерфейса на команды пользователя.

    Недостатки:

    1. не всегда возможна интеграция со стандартным набором инструментов браузера;
    2. контент, загружаемый динамически, не доступен поисковым системам, поэтому необходимо обеспечить альтернативный доступ к содержимому ресурса;
    3. неправильный учет статистики перемещения пользователя по сайту;
    4. в браузере пользователя должен быть включен JavaScript.
  • codeasync/await
    Относительно новый способ написания асинхронного кода в JS. Им оборачивают промис. Он делает код более читаемым и чистым, чем промисы и функции обратного вызова.
    Полезные ссылки:

    MDN

    Учебник

  • codeIIFE
    Immediately-invoked function expressions означает функцию, запускаемую сразу после объявления. Для создания IIFE необходимо обернуть функцию в круглые скобки (оператор группировки), превратив её в выражение, и затем вызвать её с помощью еще одних круглых скобок: (function(){})().
  • codeJSON
    JavaScript Object Notation представляет легковесный формат хранения и передачи данных.

    JSON описывает структуру и организацию данных JavaScript. Простота JSON привела к тому, что в настоящий момент он является наиболее популярным форматом передачи данных в среде web, вытеснив другой некогда популярный формат xml. Отличительная особенность формата — его легко интерпретировать не только машинам, но и людям.

    формат независим от JS и может использоваться в любом языке программирования. PHP, C#, Go, Python и многие другие языки программирования поддерживают JSON по умолчанию или с помощью вспомогательных библиотек.

    За счёт универсальности формат JSON упрощает обмен данными. Не важно, какие технологии используются на клиенте или сервере. Они смогут договориться за счёт универсального формата.

    Полезные ссылки:

    MDN

    Учебник

    Что такое JSON

  • codeNaN
    Not A Number (не число) — это значение, получаемое в результате выполнения числовой операции над нечисловым значением.

    у NaN есть две особенности:

    1. "не число" по типу является числом и typeof NaN вернёт "number".
    2. NaN — единственное значение в JavaScript, которое не равно вообще ничему, в том числе самому себе.

    Чтобы проверить переменную на NaN, используйте специальную функцию isNaN.

    Полезные ссылки:

    MDN

    Учебник

  • codeАнаморфизмы и катаморфизмы
    Анаморфизмы — это фунции, которые отображают некоторый объект на более сложную структуру, содержащую тип объекта. Это процесс разворачивания простой структуры в более сложную. Катаморфизмы противоположны анаморфизмам: они берут объекты более сложной структуры и складывают их в более простые структуры.
  • codeДеструктуризация (Destructuring)
    Деструктуризация объектов и массивов — это способ создания новых переменных путем извлечения значений из объектов или массивов. Деструктуризация позволяет извлечь из объекта отдельные значения в переменные или константы.
  • codeДетерминированность
    Функция называется детерминированной тогда, когда для одних и тех же входных параметров она возвращает один и тот же результат. Функция, возвращающая случайное число, не является детерминированной, так как у одного и того же входа мы получим всегда разный результат.
    Полезные ссылки:

    Детерминированность

  • codeЗамыкание (Closures)
    Замыкания — это функции, которые ссылаются на независимые переменные. Функция определенная в замыкании «помнит» окружение, в котором она создана.

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

  • codeЗапоминание или мемоизация (Memoization)
    Мемоизация — это сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ.

    Мемоизация — это запоминание, сохранение чего-либо в памяти. Функции, в которых используется мемоизация, обычно работают быстрее.

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

  • codeИнкремент и декремент
    Инкремент и декремент — унарные операции, которые увеличивают и уменьшают на единицу число, записанное в переменную (обычно на 1).

    У них есть постфиксная и префиксная формы. При использовании префиксной нотации сначала происходит изменение переменной, а потом возврат. При использовании постфиксной нотации — наоборот. Правило работает одинаково для инкремента и декремента.

  • codeИнтерполяция
    Интерполяция — это новый способ построения строк стандарта ES6 через вставку значений переменных в строку-шаблон с помощью фигурных скобок. Например, `Hi, ${name}!`.
  • codeКлассы (classes)
    Классы — это относительно новый способ написания функций-конструкторов в JS. Это синтаксический сахар для функций-конструкторов. В основе классов лежат те же прототипы и прототипное наследование.

    Подробнее о классах тут.

  • codeКонкатенация
    Конкатенация — операция соединения вещей друг с другом. В JavaScript конкатенация чаще всего используется для соединения значений переменных друг с другом, или строк со строками. Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой.
    Полезные ссылки:

    MDN

  • codeЛитералы
    Литералы — это простейшие данные с которыми может работать программа. Литерал — любое значение указанное явным образом.
    • Литералы целого типа — целые числа в различном представлении.
    • Вещественные литералы — дробные числа. Целая часть отделяется от дробной точкой.
    • Логические значения — истина (true) и ложь (false).
    • Строковые литералы — последовательность символов, заключенная в одинарные или двойные кавычки. Например: "ваше имя", 'ваше имя'.
    Полезные ссылки:

    MDN

  • codeМодули (Modules)
    Модули — это кусочки кода, которые хранятся в отдельных файлах. Это делает код более понятным и простым в обслуживании.

    Модули позволяют объединять (использовать) код из разных файлов и избавляют нас от необходимости держать весь код в одном большом файле.

    В современном JavaScript осталось два основных стандарта модульных систем. Это CommonJS, которая является основной для платформы Node.js, и ESM (ECMAScript 6 модули), которая была принята как стандарт для языка и внесена в спецификацию ES2015.

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

  • codeОбласть видимости (Scope)
    Область видимости — это место, где (или откуда) мы имеем доступ к переменным или функциям. JS имеет три типа областей видимости: глобальная, функциональная и блочная.

    Механизм областей видимости в JavaScript ограничивает видимость переменных и функций в разных частях программы. Области видимости могут вкладываться друг в друга и создавать иерархию. Переменные и функции, объявленные в области видимости выше по иерархии, доступны в большем количестве мест программы, но только "вниз". Это значит, что переменные из родительских областей видимости доступны в дочерних областях, а наоборот — нет.

  • codeОбъект Set
    Set (множество) — коллекция для хранения уникальных значений любого типа. Одно и то же значение нельзя добавить в Set больше одного раза.

    Set — это неиндексированная коллекция, положить элемент в коллекцию можно, но достать нельзя. По элементам коллекции можно итерироваться.

    Объект Set позволяет хранить уникальные значения, примитивы и ссылки на объекты. Set проверяет хранящиеся в нем значения с помощью алгоритма SameZeroValue.

    Экземпляр Set создается с помощью конструктора Set.

    Полезные ссылки:

    MDN

    Учебник

    Set (Дока)

    Set (codechick)

  • codeОбъектная обертка (Wrapper Objects)
    В JavaScript есть 5 типов примитивов: number, string, boolean, null и undefined. При этом типы number, string и boolean имеют так называемые объекты обертки. Объекты обертки могут быть созданы с помощью конструкторов Number(), String() и Boolean().

    Объекты обертки имеют специальные методы, но для того чтобы ими пользоваться не обязательно создавать объект с помощью конструктора. Если вызвать метод у примитива, то он на время будет сконвертирован в объект и метод успешно выполнится.

    Полезные ссылки:

    MDN

    Учебник

  • codeПоднятие (Hoisting)
    Поднятие (hoisting) — это поведение, при котором функцию или переменную можно использовать до объявления. Это термин, описывающий подъем переменной или функции в глобальную или функциональную области видимости.

    Поднятие предполагает, что объявления переменных и функций физически перемещаются в начало кода. Ключевое слово var поддерживает hoisting, let и const — нет. JavaScript не поддерживает поднятие с инициализацией.

    Hoisting может привести к нежелательным последствиям в вашей программе. Поэтому лучше сначала объявлять переменные и функции перед использованием.

  • codeПредикаты
    Предикат — выражение, отвечающее на вопрос «да» или «нет» с помощью типа boolean.

    Функции-предикаты (или функции-вопросы) отвечают на какой-то вопрос и всегда возвращают либо true, либо false.

    Предикаты во всех языках принято именовать особым образом для простоты анализа. В JavaScript предикаты, как правило, начинаются с префикса is, has или can, но не ограничены этими словами.

  • codeПромисы (Promises)
    Промисы — это один из приемов работы с асинхронным кодом в JS. Промис — это глобальный объект Promise. Он позволяет отследить выполнение асинхронной операции и сохранить её результат.
  • codeПрототип объекта
    Прототипы — это механизм, с помощью которого объекты JavaScript наследуют свойства друг от друга.

    Это план (схема или проект) объекта. Он используется как запасной вариант для свойств и методов, существующих в данном объекте. Это также один из способов обмена свойствами и функциональностью между объектами.

    Узнать больше тут.

  • codeРекурсия
    Рекурсия в программировании — это вызов функции из этой же самой функции.

    При решении некоторых задач мы можем обнаружить, что решение можно разбить на несколько простых действий и более простой вариант той же задачи.

    Внутри рекурсивной функции обязательно должно находится условие выхода из рекурсии. Иначе функция будет вызывать саму себя бесконечно.

  • codeСинтаксический сахар
    Синтаксический сахар — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
  • codeСлабая типизация
    Слабая типизация — это типизация, при которой язык программирования выполняет множество неявных преобразований типов автоматически, даже если может произойти потеря точности или преобразование неоднозначно.

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

    В языках со строгой типизацией сложить число со строкой не получится.

  • codeСобытия
    События — это структура, которая следит за тем, что происходит в браузере, а затем позволяет вам запускать код в ответ на это.

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

    Больше информации тут.

  • codeФазы события и Делегирование (event delegation)
    Событие делегируется — передается от родителя к дочерним элементам.

    Распространение событий состоит из трех фаз или стадий:

    1. Фаза захвата или погружения — начиная с window, document и корневого элемента, событие опускается до целевого элемента (элемента, вызвавшего событие), последовательно проходя через всех его предков
    2. Целевая фаза — это когда событие достигает целевого элемента
    3. Фаза поднятия или всплытия (не путать с hoisting) - событие поднимается от целевого элемента через всех его предков до document и window

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

  • codeФункция обратного вызова (Callback Function)
    Функция обратного вызова — это функция, вызов которой отложен на будущее (происходит при некоторых условиях).

    Коллбэк — это функция, которая должна быть выполнена после того, как другая функция завершила выполнение.

  • codeШаблонные литералы (Template Literals)
    Шаблонные литералы — относительно новый способ создания строк в JS. Шаблонные строки объявляются с помощью обратных кавычек.

    Шаблонная строка может быть многострочной, все переносы строк в ней будут сохранены. В шаблонной строке с помощью синтаксиса ${ } можно использовать любые выражения JavaScript. Любой нестроковый результат (например, объект) будет приведён к строке.

    Шаблонные строки сейчас — основной способ работы со строками, в которые нужно подставлять вычисляемые значения.