Глоссарий
-
codeAJAXAsyncronous JavaScript and XML — это технология обращения к серверу без перезагрузки страницы. Способ построения интерактивных пользовательских web-приложений посредством фонового обмена информацией браузера с сервером. Термин AJAX обозначил Джесси Джеймс Гаррет в 2005 году. Первыми приложениями, использующими данную технологию, стал сервис карт Google Maps и почтовый клиент Gmail.
Преимущества:
- экономия трафика пользователя;
- снижение нагрузки на сервер;
- ускорение реагирования интерфейса на команды пользователя.
Недостатки:
- не всегда возможна интеграция со стандартным набором инструментов браузера;
- контент, загружаемый динамически, не доступен поисковым системам, поэтому необходимо обеспечить альтернативный доступ к содержимому ресурса;
- неправильный учет статистики перемещения пользователя по сайту;
- в браузере пользователя должен быть включен JavaScript.
-
codeasync/await
-
codeIIFEImmediately-invoked function expressions означает функцию, запускаемую сразу после объявления. Для создания IIFE необходимо обернуть функцию в круглые скобки (оператор группировки), превратив её в выражение, и затем вызвать её с помощью еще одних круглых скобок: (function(){})().
-
codeJSONJavaScript Object Notation представляет легковесный формат хранения и передачи данных.
JSON описывает структуру и организацию данных JavaScript. Простота JSON привела к тому, что в настоящий момент он является наиболее популярным форматом передачи данных в среде web, вытеснив другой некогда популярный формат xml. Отличительная особенность формата — его легко интерпретировать не только машинам, но и людям.
формат независим от JS и может использоваться в любом языке программирования. PHP, C#, Go, Python и многие другие языки программирования поддерживают JSON по умолчанию или с помощью вспомогательных библиотек.
За счёт универсальности формат JSON упрощает обмен данными. Не важно, какие технологии используются на клиенте или сервере. Они смогут договориться за счёт универсального формата.
-
codeNaNNot A Number (не число) — это значение, получаемое в результате выполнения числовой операции над нечисловым значением.
у NaN есть две особенности:
- "не число" по типу является числом и typeof NaN вернёт "number".
- NaN — единственное значение в JavaScript, которое не равно вообще ничему, в том числе самому себе.
Чтобы проверить переменную на NaN, используйте специальную функцию isNaN.
-
codeАнаморфизмы и катаморфизмыАнаморфизмы — это фунции, которые отображают некоторый объект на более сложную структуру, содержащую тип объекта. Это процесс разворачивания простой структуры в более сложную. Катаморфизмы противоположны анаморфизмам: они берут объекты более сложной структуры и складывают их в более простые структуры.
-
codeДеструктуризация (Destructuring)Деструктуризация объектов и массивов — это способ создания новых переменных путем извлечения значений из объектов или массивов. Деструктуризация позволяет извлечь из объекта отдельные значения в переменные или константы.
-
codeДетерминированностьФункция называется детерминированной тогда, когда для одних и тех же входных параметров она возвращает один и тот же результат. Функция, возвращающая случайное число, не является детерминированной, так как у одного и того же входа мы получим всегда разный результат.
Полезные ссылки:
-
codeЗамыкание (Closures)Замыкания — это функции, которые ссылаются на независимые переменные. Функция определенная в замыкании «помнит» окружение, в котором она создана.
Замыкание — это способность функции во время создания запоминать ссылки на переменные и параметры, находящиеся в текущей области видимости, в области видимости родительской функции, в области видимости родителя родительской функции и так до глобальной области видимости с помощью цепочки областей видимости. Обычно область видимости определяется при создании функции.
-
codeЗапоминание или мемоизация (Memoization)Мемоизация — это сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ.
Мемоизация — это запоминание, сохранение чего-либо в памяти. Функции, в которых используется мемоизация, обычно работают быстрее.
Преимущество мемоизации заключается в том, что мы избегаем повторного выполнения функции с одинаковыми аргументами. Недостатком является то, что мы вынуждены выделять дополнительную память для сохранения результатов.
-
codeИнкремент и декрементИнкремент и декремент — унарные операции, которые увеличивают и уменьшают на единицу число, записанное в переменную (обычно на 1).
У них есть постфиксная и префиксная формы. При использовании префиксной нотации сначала происходит изменение переменной, а потом возврат. При использовании постфиксной нотации — наоборот. Правило работает одинаково для инкремента и декремента.
-
codeИнтерполяцияИнтерполяция — это новый способ построения строк стандарта ES6 через вставку значений переменных в строку-шаблон с помощью фигурных скобок. Например, `Hi, ${name}!`.
-
codeКлассы (classes)Классы — это относительно новый способ написания функций-конструкторов в JS. Это синтаксический сахар для функций-конструкторов. В основе классов лежат те же прототипы и прототипное наследование.
Подробнее о классах тут.
-
codeКонкатенацияКонкатенация — операция соединения вещей друг с другом. В JavaScript конкатенация чаще всего используется для соединения значений переменных друг с другом, или строк со строками. Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой.
Полезные ссылки:
-
codeЛитералыЛитералы — это простейшие данные с которыми может работать программа. Литерал — любое значение указанное явным образом.
- Литералы целого типа — целые числа в различном представлении.
- Вещественные литералы — дробные числа. Целая часть отделяется от дробной точкой.
- Логические значения — истина (true) и ложь (false).
- Строковые литералы — последовательность символов, заключенная в одинарные или двойные кавычки. Например: "ваше имя", 'ваше имя'.
Полезные ссылки:
-
codeМодули (Modules)Модули — это кусочки кода, которые хранятся в отдельных файлах. Это делает код более понятным и простым в обслуживании.
Модули позволяют объединять (использовать) код из разных файлов и избавляют нас от необходимости держать весь код в одном большом файле.
В современном JavaScript осталось два основных стандарта модульных систем. Это CommonJS, которая является основной для платформы Node.js, и ESM (ECMAScript 6 модули), которая была принята как стандарт для языка и внесена в спецификацию ES2015.
Модульность решает следующие задачи: обеспечение поддержки изоляции кода, определение зависимостей между модулями и доставка кода в среду выполнения.
-
codeОбласть видимости (Scope)Область видимости — это место, где (или откуда) мы имеем доступ к переменным или функциям. JS имеет три типа областей видимости: глобальная, функциональная и блочная.
Механизм областей видимости в JavaScript ограничивает видимость переменных и функций в разных частях программы. Области видимости могут вкладываться друг в друга и создавать иерархию. Переменные и функции, объявленные в области видимости выше по иерархии, доступны в большем количестве мест программы, но только "вниз". Это значит, что переменные из родительских областей видимости доступны в дочерних областях, а наоборот — нет.
-
codeОбъект SetSet (множество) — коллекция для хранения уникальных значений любого типа. Одно и то же значение нельзя добавить в Set больше одного раза.
Set — это неиндексированная коллекция, положить элемент в коллекцию можно, но достать нельзя. По элементам коллекции можно итерироваться.
Объект Set позволяет хранить уникальные значения, примитивы и ссылки на объекты. Set проверяет хранящиеся в нем значения с помощью алгоритма SameZeroValue.
Экземпляр Set создается с помощью конструктора Set.
-
codeОбъектная обертка (Wrapper Objects)В JavaScript есть 5 типов примитивов: number, string, boolean, null и undefined. При этом типы number, string и boolean имеют так называемые объекты обертки. Объекты обертки могут быть созданы с помощью конструкторов Number(), String() и Boolean().
Объекты обертки имеют специальные методы, но для того чтобы ими пользоваться не обязательно создавать объект с помощью конструктора. Если вызвать метод у примитива, то он на время будет сконвертирован в объект и метод успешно выполнится.
-
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)Событие делегируется — передается от родителя к дочерним элементам.
Распространение событий состоит из трех фаз или стадий:
- Фаза захвата или погружения — начиная с window, document и корневого элемента, событие опускается до целевого элемента (элемента, вызвавшего событие), последовательно проходя через всех его предков
- Целевая фаза — это когда событие достигает целевого элемента
- Фаза поднятия или всплытия (не путать с hoisting) - событие поднимается от целевого элемента через всех его предков до document и window
Суть Делегирования событий заключается в следующем: если есть много похожих элементов, события на которых нужно обрабатывать также похожим/одинаковым образом, то вместо того, чтобы назначить обработчик события каждому элементу, создается один обработчик для общего родителя.
-
codeФункция обратного вызова (Callback Function)Функция обратного вызова — это функция, вызов которой отложен на будущее (происходит при некоторых условиях).
Коллбэк — это функция, которая должна быть выполнена после того, как другая функция завершила выполнение.
-
codeШаблонные литералы (Template Literals)Шаблонные литералы — относительно новый способ создания строк в JS. Шаблонные строки объявляются с помощью обратных кавычек. Шаблонная строка может быть многострочной, все переносы строк в ней будут сохранены. В шаблонной строке с помощью синтаксиса ${ } можно использовать любые выражения JavaScript. Любой нестроковый результат (например, объект) будет приведён к строке.
Шаблонные строки сейчас — основной способ работы со строками, в которые нужно подставлять вычисляемые значения.