Стандарт ES6

Вы только начали знакомство с JavaScript, но будет не лишним рассказать Вам о стандарте ES6 (ECMAScript 6), вышедшим в 2015 году. Он определяет не только особенности синтаксиса JavaScript, но и меняет некоторые принципы работы с функциями и методами. Конечно, сейчас многие примеры из ES6 покажутся Вам непонятными, но в дальнейшем, когда Вы освоите работу с функциями, ООП, асинхронностью, модулями и некоторыми другими понятиями из JavaScript, Вам будет полезно вернуться к этой статье и перечитать её.

Давайте вкратце пробежимся по основным правилам ES6:

  • Для объявления переменных используем let вместо var. Ключевое слово var появилось еще в первых стандартах JavaScript, однако сейчас не рекомендуется его использовать. Это связано стем, что переменная с var обладает очень большой зоной видимости и доступна в любом блоке кода, что может вызвать серьезные проблемы, особенно когда мы хотим использовать переменную только в каком-то одном блоке, напр., в условии. А вот переменная, объявленная с помощью let будет работать только в отведенной ей части кода.
  • С помощью const можно объявлять неизменяемые переменные - константы .
  • Улучшенная поддержка Юникода.
  • Стрелочные функции можно записывать в краткой форме:.
    let sum = (a, b) => a + b;
    
  • Форматированные строки позволяют использовать переменную внутри строки:
    let name = 'user';
    console.log(`Привет, ${name}!`);
    
  • Деструктуризация обеспечивает удобное извлечение нескольких значений из переменой. Напр., у нас есть объект user, хранящий имя и возраст пользователя. Давайте извлечем из него эти значения:
    let user = { name:'user1', age: 'age1' };
    
    let { name, age } = user;
    
    console.log(name); // выведет user1
    console.log(age); // выведет age1
    
  • Использование оператора spread (...) для того, чтобы извлечь все данные из массива. Давайте с помощью этого оператора вставим числа, хранящиеся в первом массиве во второй массив:
    let arr1 = [1, 2, 3];
    let arr2 = [...arr1, 'a', 'b'];
    
    console.log(arr2); // выведет [ 1, 2, 3, 'a', 'b' ]
    
  • Директивы import/export для импорта и экспорта файлов и/или их частей:
    import { func } from './module.js';
    export const arr = [1, 2, 3];
    
  • Объектно-ориентированный синтаксис для классов ООП:
    class Person {
    	constructor(name) {
    		this.name = name;
    	}
    }
    
  • Работа с асинхронным кодом идёт через промисы:
    fetch(url).then(response => response.json());
    
  • Для упрощения работы промисов используются async/await:
    async function fetchData() {
    	let data = await fetch(url);
    }