Введение в ES6
ES6 или ECMAScript 2015 - это 6- я версия языка программирования ECMAScript. ECMAScript - это стандартизация Javascript, выпущенная в 2015 году и впоследствии переименованная в ECMAScript 2015.
ECMAScript и Javascript разные по своей природе.
ECMAScript против Javascript
- ECMAScript: это спецификация, определенная в ECMA-262 для создания языка сценариев общего назначения. Проще говоря, это стандартизация для создания языка сценариев. Она была представлена Ecma International и в основном представляет собой реализацию, с помощью которой мы узнаем, как создать язык сценариев.
- Javascript: язык сценариев общего назначения, соответствующий спецификации ECMAScript. В основном это реализация, которая сообщает нам, как использовать язык сценариев.
ES6
Javascript ES6 существует уже несколько лет, и он позволяет нам писать код умным способом, что в основном делает его более современным и читаемым. Справедливо сказать, что с использованием функций ES6 мы пишем меньше и делаем больше, следовательно, термин «меньше пиши, делай больше» определенно подходит ES6.
ES6 представил несколько ключевых функций, таких как const, let, стрелочные функции, литералы шаблонов, параметры по умолчанию и многое другое. Давайте рассмотрим их один за другим.
До ES6 мы в основном использовали ключевое слово var всякий раз, когда мы хотели объявить переменную, но у него были серьезные проблемы, а также это не было фаворитом разработчиков, поэтому в версии ES6 мы познакомились с ключевыми словами const и let, которые позволяют нам хранить переменные. У них обоих есть свой способ хранения переменных.
- const : ключевое слово const в основном используется для хранения той переменной, значение которой не будет изменяться. Рассмотрим пример, когда вы создаете веб-приложение, в котором вы хотите сохранить переменную, значение которой не будет изменяться, тогда const определенно лучший выбор для хранения этой переменной. В javascript const считается более мощной, чем var. Однажды использованная для хранения переменной, ее нельзя переназначить. Проще говоря, это неизменяемая переменная, за исключением случаев, когда она используется с объектами.
Пример :
// Constconst name ='Mukul';console.log(name);// Will print 'Mukul' to the console.// Trying to reassign a const variablename ='Rahul';console.log(name);// Will give TypeError.Выход:

В приведенном выше коде мы объявили имя переменной с помощью ключевого слова const, а затем console.log, который работает нормально, но переназначение его другим значением приведет к ошибке. Теперь давайте посмотрим на пример, в котором мы объявляем объект с помощью ключевого слова const.
// Object using constconst person ={name:'Mukul Latiyan',age:'21',isPlaced:true};console.log(person.name);// 'Mukul Latiyan'person.name ='Mayank';console.log(person.name);//'Mayank'Выход:

Свойства объектов, объявленных с использованием ключевых слов const, изменяемы, как и в приведенном выше коде мы объявили объект person с некоторыми свойствами, такими как name, age, isPlaced . Когда мы пытались получить доступ к свойствам, все работает нормально, также когда мы меняем свойство name, оно тоже работает нормально. Следовательно, мы приходим к выводу, что свойства объекта изменчивы, даже если они объявлены с ключевым словом const. - let : В случае ключевого слова let объявленные переменные будут изменяемыми, т.е. значения могут быть изменены. Он работает аналогично ключевому слову var с некоторыми ключевыми отличиями, такими как область видимости, что делает его лучшим вариантом по сравнению с var.
// letlet name ='Mukul';console.log(name);// Mukulname ='Rahul';console.log(name);// RahulВыход:

Объекты тоже изменчивы. Нравиться:
// Object using letlet bike = {name :'Ninja ZX-10R',engine:'998cc',abs :'dual channel'};console.log(bike.engine);// 998ccbike.engine ='789cc';console.log(bike.engine);// 789ccВыход:

Стрелочные функции
Стрелочные функции (также известные как «толстые стрелочные функции») представляют собой более лаконичный синтаксис для написания функциональных выражений. Стрелочные функции, введенные в ES6, определенно являются одним из самых значительных изменений в javascript. Эти функциональные выражения делают ваш код более читабельным и современным.
// ES5function printName(name){ console.log( 'Hello ' +name);} printName( 'Mukul' ); // Hello Mukul |
Выход: 
Вместо этого используйте следующий код:
// ES6const printName = name =>{ return `Hi ${name}`; // using template literals}console.log(printName( 'Mukul' )); // Hi Mukul // We can also write the above code without// the return statementconst printName1 = name => `Hi ${name}`; console.log(printName1( 'Mukul' )); // Hi Mukul |
Выход: 
Литерал шаблона
Шаблонные литералы - это особенность ES6, которая позволяет нам работать со строками лучше, чем в ES5 и ниже. Просто используя шаблонные литералы, мы можем улучшить читаемость кода. До ES6 мы использовали оператор '+' всякий раз, когда мы хотели объединить строки, а также когда мы хотели использовать переменную внутри строки, что определенно не является рекомендуемым методом. литералы используют обратные галочки («), а не одинарные или двойные кавычки, которые мы использовали с обычными строками.
// ES5var name = 'Mukul Latiyan' ;console.log( 'My name is ' + name); // ES6const name1 = 'Mukul Latiyan' ;console.log(`My name is ${name1}`); |
Выход: 
Разрушение объектов и массивов
Разрушение в javascript в основном означает разбиение сложной структуры (объектов или массивов) на более простые части. С помощью деструктивного присваивания мы можем «распаковать» объекты массива в кучу переменных.
Разрушение объекта
// ES5const college = { name : 'DTU' , established : '1941' , isPrivate : false}; let name = college.name;let established = college.established;let isPrivate = college.isPrivate; console.log(name); // DTUconsole.log(established); // 1941console.log(isPrivate); // false |
Выход: 
Новый способ сделать это с помощью ES6:
// ES6const college = { name : 'DTU' , established : '1941' , isPrivate : false}; let{name,established,isPrivate} = college; console.log(name); // DTUconsole.log(established); // 1941console.log(isPrivate); // false |
Выход: 
Поэтому вместо того, чтобы объявлять переменные отдельно для каждого свойства объекта, мы просто помещаем наши значения в фигурные скобки, чтобы получить любое свойство объекта.
Уничтожение массива
В случае разрушения массивов можно просто заменить фигурные скобки квадратными.
Нравиться:
// ES6const arr = [ 'lionel' , 'messi' , 'barcelona' ]; let[value1,value2,value3] = arr; console.log(value1); // lionelconsole.log(value2); // messiconsole.log(value3); // barcelona |
Выход: 
Параметры по умолчанию
Параметры по умолчанию позволяют заранее определить параметр, что может быть полезно в определенных сценариях. В javascript для параметра функции по умолчанию установлено значение undefined. Однако полезно установить другое значение по умолчанию. До ES6 мы использовали способ определения параметров по умолчанию путем тестирования значения параметров в теле функции по умолчанию и присвоения значения, если они не определены.
// ES5function fun(a,b){ return a+b;} console.log(fun(2,1)); // 3console.log(fun(2)); // 2 + undefined is NaN(not-a-number) |
Выход: 
Мы удалили эту ошибку параметра по умолчанию следующим образом:
// ES5(improved)function fun(a,b){ b = ( typeof b!== 'undefined' )?b:1; return a + b;} console.log(fun(2,1)); // 3console.log(fun(2)); // 3 |
Выход: 
После ES6 мы можем просто написать:
// ES6function fun(a,b=1){ return a + b;} console.log(fun(2,1)); // 3console.log(fun(2)); // 3 |
Выход: 
Классы
Классы - это ядро объектно-ориентированного программирования (ООП). ES6 представил классы в javascript. Классы в javascript можно использовать для создания новых объектов с помощью конструктора, каждый класс может иметь только один конструктор внутри.
// classes in ES6class Vehicle{ constructor(name,engine){ this .name = name; this .engine = engine; }} const bike1 = new Vehicle( 'Ninja ZX-10R' , '998cc' );const bike2 = new Vehicle( 'Duke' , '390cc' ); console.log(bike1.name); // Ninja ZX-10Rconsole.log(bike2.name); // Duke |
Выход: 
Параметр отдыха и оператор спреда
- Параметр отдыха : синтаксис параметра rest позволяет нам представить неопределенное количество аргументов в виде массива. С помощью параметра rest функция может быть вызвана с любым количеством аргументов, независимо от того, как она была определена.
// simple functionfunctionfun(a,b){returna + b;}console.log(fun(1,2));// 3console.log(fun(1,2,3,4,5));// 3Выход:

В приведенном выше коде ошибка не будет выдана, даже если мы передаем аргументов больше, чем параметров, но будут оцениваться только первые два аргумента. Иначе обстоит дело с параметром отдыха.
// ES6 rest parameterfunctionfun(...input){let sum = 0;for(let i of input){sum+=i;}sum;return}console.log(fun(1,2));// 3console.log(fun(1,2,3));// 6console.log(fun(1,2,3,4,5));// 15Выход:

- Оператор распространения : оператор распространения - это еще один оператор, предоставляемый ES6, который позволяет нам получать список параметров из массива. Рассмотрим пример, когда у нас есть список чисел, и мы возвращаем минимальное число из этого списка.
console.log(Math.min(1,2,3,-1));// -1Выход:

Теперь учтите, что у нас есть массив вместо списка, этот метод объекта Math выше не будет работать и вернет NaN, например:
// Without spreadlet arr = [1,2,3,-1];console.log(Math.min(arr));// NaNВыход:

Когда… arr используется в вызове функции, он «расширяет» итерируемый объект arr в список аргументов.
Чтобы избежать этого вывода NaN, мы можем использовать оператор распространения, как:
// Spread operatorlet arr = [1,2,3,-1];console.log(Math.min(...arr));// -1Выход:

И оператор распространения, и оператор остатка используют тройные точки (…), и иногда трудно отличить, какая из них находится в состоянии покоя или разброса. Просто помните, что:
- Когда… находится в конце параметра функции, это параметр отдыха.
- Когда… происходит в вызове функции или что-то подобное, это называется оператором распространения.