Введение в 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. Однажды использованная для хранения переменной, ее нельзя переназначить. Проще говоря, это неизменяемая переменная, за исключением случаев, когда она используется с объектами.
Пример :
// Const
const name =
'Mukul'
;
console.log(name);
// Will print 'Mukul' to the console.
// Trying to reassign a const variable
name =
'Rahul'
;
console.log(name);
// Will give TypeError.
Выход:
В приведенном выше коде мы объявили имя переменной с помощью ключевого слова const, а затем console.log, который работает нормально, но переназначение его другим значением приведет к ошибке. Теперь давайте посмотрим на пример, в котором мы объявляем объект с помощью ключевого слова const.
// Object using const
const 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.
// let
let name =
'Mukul'
;
console.log(name);
// Mukul
name =
'Rahul'
;
console.log(name);
// Rahul
Выход:
Объекты тоже изменчивы. Нравиться:
// Object using let
let bike = {
name :
'Ninja ZX-10R'
,
engine:
'998cc'
,
abs :
'dual channel'
};
console.log(bike.engine);
// 998cc
bike.engine =
'789cc'
;
console.log(bike.engine);
// 789cc
Выход:
Стрелочные функции
Стрелочные функции (также известные как «толстые стрелочные функции») представляют собой более лаконичный синтаксис для написания функциональных выражений. Стрелочные функции, введенные в ES6, определенно являются одним из самых значительных изменений в javascript. Эти функциональные выражения делают ваш код более читабельным и современным.
// ES5 function printName(name){ console.log( 'Hello ' +name); } printName( 'Mukul' ); // Hello Mukul |
Выход:
Вместо этого используйте следующий код:
// ES6 const printName = name =>{ return `Hi ${name}`; // using template literals } console.log(printName( 'Mukul' )); // Hi Mukul // We can also write the above code without // the return statement const printName1 = name => `Hi ${name}`; console.log(printName1( 'Mukul' )); // Hi Mukul |
Выход:
Литерал шаблона
Шаблонные литералы - это особенность ES6, которая позволяет нам работать со строками лучше, чем в ES5 и ниже. Просто используя шаблонные литералы, мы можем улучшить читаемость кода. До ES6 мы использовали оператор '+' всякий раз, когда мы хотели объединить строки, а также когда мы хотели использовать переменную внутри строки, что определенно не является рекомендуемым методом. литералы используют обратные галочки («), а не одинарные или двойные кавычки, которые мы использовали с обычными строками.
// ES5 var name = 'Mukul Latiyan' ; console.log( 'My name is ' + name); // ES6 const name1 = 'Mukul Latiyan' ; console.log(`My name is ${name1}`); |
Выход:
Разрушение объектов и массивов
Разрушение в javascript в основном означает разбиение сложной структуры (объектов или массивов) на более простые части. С помощью деструктивного присваивания мы можем «распаковать» объекты массива в кучу переменных.
Разрушение объекта
// ES5 const college = { name : 'DTU' , established : '1941' , isPrivate : false }; let name = college.name; let established = college.established; let isPrivate = college.isPrivate; console.log(name); // DTU console.log(established); // 1941 console.log(isPrivate); // false |
Выход:
Новый способ сделать это с помощью ES6:
// ES6 const college = { name : 'DTU' , established : '1941' , isPrivate : false }; let{name,established,isPrivate} = college; console.log(name); // DTU console.log(established); // 1941 console.log(isPrivate); // false |
Выход:
Поэтому вместо того, чтобы объявлять переменные отдельно для каждого свойства объекта, мы просто помещаем наши значения в фигурные скобки, чтобы получить любое свойство объекта.
Уничтожение массива
В случае разрушения массивов можно просто заменить фигурные скобки квадратными.
Нравиться:
// ES6 const arr = [ 'lionel' , 'messi' , 'barcelona' ]; let[value1,value2,value3] = arr; console.log(value1); // lionel console.log(value2); // messi console.log(value3); // barcelona |
Выход:
Параметры по умолчанию
Параметры по умолчанию позволяют заранее определить параметр, что может быть полезно в определенных сценариях. В javascript для параметра функции по умолчанию установлено значение undefined. Однако полезно установить другое значение по умолчанию. До ES6 мы использовали способ определения параметров по умолчанию путем тестирования значения параметров в теле функции по умолчанию и присвоения значения, если они не определены.
// ES5 function fun(a,b){ return a+b; } console.log(fun(2,1)); // 3 console.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)); // 3 console.log(fun(2)); // 3 |
Выход:
После ES6 мы можем просто написать:
// ES6 function fun(a,b=1){ return a + b; } console.log(fun(2,1)); // 3 console.log(fun(2)); // 3 |
Выход:
Классы
Классы - это ядро объектно-ориентированного программирования (ООП). ES6 представил классы в javascript. Классы в javascript можно использовать для создания новых объектов с помощью конструктора, каждый класс может иметь только один конструктор внутри.
// classes in ES6 class 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-10R console.log(bike2.name); // Duke |
Выход:
Параметр отдыха и оператор спреда
- Параметр отдыха : синтаксис параметра rest позволяет нам представить неопределенное количество аргументов в виде массива. С помощью параметра rest функция может быть вызвана с любым количеством аргументов, независимо от того, как она была определена.
// simple function
function
fun(a,b){
return
a + b;
}
console.log(fun(1,2));
// 3
console.log(fun(1,2,3,4,5));
// 3
Выход:
В приведенном выше коде ошибка не будет выдана, даже если мы передаем аргументов больше, чем параметров, но будут оцениваться только первые два аргумента. Иначе обстоит дело с параметром отдыха.
// ES6 rest parameter
function
fun(...input){
let sum = 0;
for
(let i of input){
sum+=i;
}
sum;
return
}
console.log(fun(1,2));
// 3
console.log(fun(1,2,3));
// 6
console.log(fun(1,2,3,4,5));
// 15
Выход:
- Оператор распространения : оператор распространения - это еще один оператор, предоставляемый ES6, который позволяет нам получать список параметров из массива. Рассмотрим пример, когда у нас есть список чисел, и мы возвращаем минимальное число из этого списка.
console.log(Math.min(1,2,3,-1));
// -1
Выход:
Теперь учтите, что у нас есть массив вместо списка, этот метод объекта Math выше не будет работать и вернет NaN, например:
// Without spread
let arr = [1,2,3,-1];
console.log(Math.min(arr));
// NaN
Выход:
Когда… arr используется в вызове функции, он «расширяет» итерируемый объект arr в список аргументов.
Чтобы избежать этого вывода NaN, мы можем использовать оператор распространения, как:
// Spread operator
let arr = [1,2,3,-1];
console.log(Math.min(...arr));
// -1
Выход:
И оператор распространения, и оператор остатка используют тройные точки (…), и иногда трудно отличить, какая из них находится в состоянии покоя или разброса. Просто помните, что:
- Когда… находится в конце параметра функции, это параметр отдыха.
- Когда… происходит в вызове функции или что-то подобное, это называется оператором распространения.