Где-то в конце 19 века была запущена концепция веб-сайтов. Это была простая страница, на которой отображалась информация о WWW, да, Всемирной паутине. Интересно посмотреть, как это было? Не волнуйтесь, это предварительный просмотр.

Постепенно концепция веб-страниц стала очень популярной. Но до очень долгого времени веб-страницы были статичными, и внутри различных тегов отображалась только информация. С ростом интернет-мира появилась новая концепция интерактивных веб-сайтов. Что это значит? Ничего отличного! Просто иметь возможность изменять содержимое веб-сайта (т.е. изменять объект DOM). Итак, в этом направлении был бум, и DOM (объектная модель документа) была легко доступна и модифицируема. Так что это была обязанность, которая была возложена на наш прекрасный язык сценариев JS.

Определение JS

MDN определило JS как JavaScript (JS) — это облегченный, интерпретируемый или «точно вовремя скомпилированный язык программирования с первоклассными функциями. ». Хотя он наиболее известен как язык сценариев для веб-страниц, его также используют многие небраузерные среды, такие как Node.js, Apache CouchDB и Adobe Acrobat. JavaScript — это основанный на прототипах, мультипарадигменный, однопоточный, динамический язык, поддерживающий объектно-ориентированный, императивный и декларативный (например, функциональное программирование) стили. Подробнее читайте о JavaScript.
Хотите прочитать весь контент — вот он!.

Изобретатель JS

Я забыл кое-что упомянуть. На самом деле JS был изобретен Бренданом Эйхом, тем же человеком, который стал соучредителем проекта Mozilla, Mozilla Foundation и Mozilla Corporation, а также был главным техническим директором Mozilla Corporation и, ненадолго, ее главным исполнительным директором. Кроме того, слышали ли вы о новейшем бесплатном браузере с открытым исходным кодом BRAVE, который помогает пользователю блокировать рекламу, средства отслеживания веб-сайтов, а также поддерживает сеть TOR. Юс, вы правильно догадались, Брендан является генеральным директором браузера нового века TOR, уважающего конфиденциальность пользователей.

JS и ECMAScript или ES: программная путаница

Когда я начал изучать JS, у меня было много путаницы в отношении слова ES6. Я был сбит с толку, когда кто-то сказал: «Эй, чувак, используй это как ES6». Итак, я начал копаться в царстве ECMAScript. Путаница была не только в ES, но и в том, как она связана с JS.

В конце 90-х ECMA (Европейская ассоциация производителей компьютеров) International, организация по стандартизации, разработала стандартную спецификацию языка сценариев, которую могли реализовать все поставщики браузеров, она называлась ECMAScript (ES). К нашему удивлению, этот язык программирования общего назначения был разработан Бренданом из Netscape. Затем он был переименован в Mocha, который был дополнительно связан и поставлялся с Netscape Navigator 2.0 с новым идентификатором, т.е. LiveScript. Это путешествие продолжалось, и язык сценариев продолжал развиваться, и, наконец, с выпуском БЕТА 3 Netscape Navigator 2.0 он был назван "JavaScript". Хотя люди склонны путать его с "JAVA", он сильно отличается с точки зрения работы, функциональности, семантики и синтаксиса.

В 21 веке, когда веб-сайты не ограничивались внешним интерфейсом, а требовали мощного и динамичного внутреннего интерфейса, возросло использование нескольких серверных технологий. Среди них JavaScript стал одним из наиболее предпочтительных языков с помощью внутреннего языка JS — NodeJS. Основной причиной этого было использование одного и того же языка JS как для фронтенда, так и для бэкенда, что избавляло от необходимости изучать два разных языка для фронтенда и бэкенда.

ES-версии

Медленно и неуклонно этот ECMAScript начал развиваться и был выпущен в виде новых версий, например, ESversions ex. ЕС5, ЕС6. Соглашение об именах для этих версий было просто ES, за которым следовал номер версии до 2016 года, когда они начали называть его как ECMAScript, за которым следовал год выпуска. ECMAScript 2016. До 2021 года у ES было 12 версий, последняя из которых — ECMAScript 2021. С годами версия ES обновлялась, чтобы добавить новые характеристики, такие как объектно-ориентированный характер, операторы JSON и т. д.

Изменения в зависимости от версии

Я бы перечислил несколько изменений (около 4), которые были внесены в каждую версию.

ES1

Это была первая версия.

ES2

Эта версия включает несколько редакционных изменений.

ES3

  1. Обработка исключений TRY/CATCH. Оператор try заключает в себе блок кода, в котором может возникнуть исключительное состояние, например ошибка времени выполнения или оператор throw. Предложение catch предоставляет код обработки исключений. Когда предложение catch перехватывает исключение, его идентификатор привязывается к этому исключению.

2. Объекты RegExp (регулярное выражение)
Объект RegExp содержит регулярное выражение и связанные с ним флаги. RegExp можно использовать для сопоставления с образцом, поиска и замены.

3. Конструктор даты

Когда Date вызывается как часть нового выражения, это конструктор: он инициализирует только что созданный объект.
new Date (год, месяц [, дата [, часы [, минуты [, секунды] [, мс]] ] ] ] ] )

Когда Date вызывается с аргументами от двух до семи, она вычисляет дату по году, месяцу и (необязательно) дате, часам, минутам, секундам и миллисекундам.

4. Улучшенная обработка строк

Строковый конструктор был снабжен различными методами, такими как .toString() .charAt() .concat() и т. д.

ES4

Из-за некоторых политических разногласий по поводу сложности языка версия es4 так и не была запущена. Большинство его функций были исключены или приняты в ES6.

ES5

  1. сейчас () в Дата

Функция Date.now() возвращает числовое значение, которое представляет собой значение времени, обозначающее дату и время в формате UTC, когда произошел вызов now.

2. Методы JSON

Объект JSON содержит два метода JSON.stringify() и JSON.parse()
a. Функция stringify возвращает строку в формате JSON, представляющую значение ECMAScript.
б. Функция синтаксического анализа преобразует данный текст в действительный JSON. Его следует использовать с осторожностью и правильной обработкой ошибок.

3.Использовать строгую директиву

Строгий режим — это способ включить ограниченный вариант JavaScript, тем самым неявно отказываясь от «небрежного режима». Он устраняет некоторые тихие ошибки JavaScript, заменяя их ошибками генерирования.

4.forEach(callback())
Метод forEach() выполняет предоставленную функцию обратного вызова один раз для каждого элемента предоставленного объекта. Проблема с foreach заключается в том, что его итерацию нельзя пропустить или прервать, поэтому он работает для всех элементов без перерыва.

ES6

Эта версия внесла значительные изменения в способ написания кода JS. Он привнес некоторые из наиболее важных функций, схожих с современными языками программирования.

  1. Классы

В JS не было использования синтаксиса классов, и программисты нуждались в использовании растянутого синтаксиса прототипа. Эта версия привнесла настоящую концепцию классов ООП.

2. Переменные let и const

JS поддерживал только функцию и область глобального уровня, поэтому каждая переменная рассматривалась как глобальная переменная. Это может привести к тому, что переменной будет ошибочно присвоено новое значение. Итак, ES6 ввел const и let.
a. let — объявляет переменную для области видимости блока. Вне области переменная не определена.

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

3. Параметры по умолчанию
В случае, если вы передаете less или undefined для параметра со значением по умолчанию, определенным в params arg определения функции, тогда ему назначается это значение по умолчанию.

4. Обещания

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

ECMAScript 2016

1. Оператор возведения в степень
Этот оператор добавляется к арифметическим операторам. Он возводит первый операнд в степень второго операнда.

2 .включает()

Сообщает, существует ли элемент в массиве или нет. Возвращает истину/ложь

3. асинхронно/ждите

Async/Await используются как ключевое слово для асинхронного программирования. Это похоже на искусственное сахарное покрытие для синтаксиса обратного вызова, а также помогает предотвратить ад обратного вызова (здесь он был представлен как подготовка к следующей версии).

ECMAScript 2017

  1. Заполнение строки
    Предусмотрен 2 метода добавления текста заполнения в начало или конец
    padStart(StartingPositionOfActualText, PaddingDigit) — добавить заполнение в начале
    padStart(PAddingLEngth+a, PaddingDigit )- добавить отступ в конце

2. Object.entries
Функция Object.entries() очень полезна для получения пар ключ-значение. Этот метод возвращает массив пар ключ/значение из предоставленного объекта.

3. Object.values
Функция Object.values() очень полезна при извлечении значения из объекта. Этот метод возвращает массив значений из предоставленного объекта.

ECMAScript 2018

  1. Оператор спреда.Оператор спреда позволяет легко копировать свойства объекта вместо использования старого метода Object.assign.

2.метод .finally:

Некоторый код необходимо выполнить независимо от разрешения, отклонения, т.е. ответ или ошибка, то такой код нужно добавить в метод finally. Я был добавлен к предыдущему набору методов promises, таких как .then, .catch и т. д.

ECMAScript 2019

  1. Arr.flat()
    Метод Arr.flat() полезен при создании нового массива со всеми элементами подмассивов внутри него. Вы также можете указать, до какой глубины вы хотите сгладить массив.

2. Object.fromEntries()

Методы преобразуют список пар ключ-значение в правильный объект js.

ECMAScript 2020

  1. Нулевой оператор объединения
    Он возвращает свой правый операнд, только если его левая часть равна нулю или не определена. Это похоже на || отличие оператора только в том, что в таком сценарии оператор || оператор возвращает правый операнд для всех левых операндов, таких как null, undefined, false, NaN.

2. BigInt:

Это еще один примитивный тип данных для хранения числа за пределами Number.MAX_SAFE_INTEGER. Он создается добавлением n в конец целочисленного литерала или вызовом конструктора BigInt() (но без оператора new) и присвоением ему целочисленного значения или строкового значения.

ECMAScript 2021

Это последняя, ​​т.е. 12-я редакция скрипта ES.
1. String.replaceAll:

Метод replace в предыдущей версии использовался для замены только первого экземпляра строки поиска в тексте. Для множественного поиска необходимо было предоставить выражение регулярного выражения с глобальным флагом g, пример /searchThisText/g.

Вместо этого теперь вы можете использовать replaceAll(searchstring,replacestring) для замены всех экземпляров строки поиска в исходном тексте.

2. Частный метод:
Если мы хотим, чтобы какой-то метод в нашем классе был закрытым, до ECMA2021 не было прямой функциональности, теперь мы можем использовать функциональность частного метода.
Если мы хотим сделать substract() частным методом внутри класса Calculator, чтобы ограничить доступ за пределы класса, добавьте решетку (#) перед методом, подобным этому #substract. Точно так же методы доступа также можно сделать закрытыми, как это

получить имя_аксессора() {} ===› получить #имя_аксессора(){}

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

Хотите узнать больше о подробной информации об этих версиях ES?
Я прилагаю все ссылки, которые я использовал для изучения JS и создания этого поста. Вы можете получить расширенную информацию с этого сайта.

Кредиты и ссылки:
1. https://en.wikipedia.org/wiki/ECMAScript#ES2015

2. https://en.wikipedia.org/wiki/Null_coalescing_operator

3. https://en.wikipedia.org/wiki/Brave_(веб-браузер)

4. https://www.w3schools.com/js/js_versions.asp

5. https://www-archive.mozilla.org/js/language/E262-3.pdf

6. https://262.ecma-international.org/7.0/

7. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt

8. https://dev.to/faithfulojebiyi/new-features-in-ecmascript-2021-with-code-examples-302h

У тебя есть сомнения ?

Посетите мой Github
Свяжитесь с нами через почту
Проверьте мой профиль в LinkedIN
Проверьте мой интернет-магазин Chrome