В июне 2015 года была запущена 6-я версия ECMAScript, и это был самый большой переход javascript, который мы называем ES2015 или ES6. По ES6 есть множество руководств, но это будет самый простой учебник, если вы хотите перейти с ES5 на ES6. ES6.Мы будем практиковать каждую концепцию сначала в ES5, а затем изменим ее на ES6.

Это первая часть моей серии по изучению ES6 самым простым способом.

Гарантия

1. Просто потренируйтесь в каждом примере в редакторе кода, и в конце, если вы не поняли никакой концепции, я предложу бесплатный сеанс частной видеозвонки.

Оглавление

1: Объявление переменной с помощью let и const

2: блоки

3: Функции стрелок

4: струны

5: Разрушение

6: Массивы

7: Карты

8: Операторы покоя и по умолчанию

9: Классы и подклассы

Объявление переменной с помощью let и const

Наконец, в ES6 мы можем объявлять переменные с помощью let и константы с помощью ключевых слов const. Переменные по имени должны иметь возможность изменять значения, а константы не должны позволять изменять значения.

//ES5
var x = 14;
x = 12;
console.log(x);//12
12;

из приведенного выше кода мы успешно изменили значение переменной с 14 на 12

//ES6
let x = 14;
x = 12;
console.log(x); //12

из приведенного выше кода мы успешно изменили значение переменной с 14 на 12

//ES6
const y = 14;
y = 12; //TypeError: Assignment to constant variable.
console.log(y);

Из приведенного выше кода с const, когда мы запускаем программу, получаем ошибку типа, что значение const не может быть изменено.

В данный момент вы думаете, что let и var равны, но они не равны, и на следующем шаге мы выясним, почему они не равны

Область действия let, const и var

Чтобы двигаться дальше, нам нужно понимать, что такое объявление и инициализация

var a   //declaration
a = 5   // initialization
let b //declaration 
b = 10  //initialization
var c = 5  //declaration plus initialization in one step
let d = 5  //declaration plus initialization in one step
const a ; // SyntaxError: Missing initializer in const declaration
a = 5;
console.log(a);
const a = 5
console.log(a) //5

1: when we start our variable with var, let is called declaration. e.g: var a; or let a;
2: when we start our variable and assigning value it is declaration and initialization with value
3: const cannot be declared only, you need to initialize it with declaration

В разделе «Область действия» мы будем различать var и let

Let and const have a block scope but var has function scope.

Если вы не поняли вышеприведенную строку, это нормально, мы поймем это ниже.

//ES5
function adult5(age) {
  if (age > 18) {
    var status = 'adult';
  }
  console.log(status); //adult
}
adult5(20);

В приведенном выше примере выводится «взрослый», статус var может быть доступен в любом месте функции.

Прежде чем двигаться вперед, блок в javascript должен быть заключен в круглые скобки, например {…}. Таким образом, один набор круглых скобок составляет один блок. пример блока ниже.

{
........
.......
.......
......
}

перейдем к важному моменту.

// ES6
function adult6(age) {
  if (age > 18) {
    let status = 'adult';
  }
  console.log(status); //ReferenceError: status is not defined
}
adult6(20);

запустите приведенный выше пример на своей консоли. это обучение на практике. Приведенный выше пример дает нам ошибку, статус которой не определен. мы объявили статус внутри блока if и хотим получить доступ за пределами блока if, поэтому статус с let недоступен за пределами блока

До сих пор мы узнали

1: var and let can change their value and const cannot change its value
2: var can be accessible anywhere in function but let and const can only be   accessible inside the block where they are declared.

Теперь ты понимаешь, что

let and const have a block scope but var has function scope.

Давайте рассмотрим другой пример, чтобы лучше понять область действия блока и область действия функции.

Теперь приготовьтесь к вопросам на собеседовании

//ES5
var num = 10;
for (var num = 0; num < 3; num++) {
  console.log(num); //0 1 2
}
console.log(num); //3

в приведенном выше примере значение num вне цикла for равно 3, поэтому num имеет глобальную область видимости. если var определен вне функции, он имеет глобальную область видимости, поэтому к нему можно получить доступ в любом месте, поэтому внутри цикла for var num доступен, поэтому значение num изменяется, и когда мы console.log (num) вне цикла for, это значение изменяется.

//ES6
let num = 10;
for (let num = 0; num < 3; num++) {
  console.log(num); //0 1 2
}
console.log(num); //10

В приведенном выше примере, когда мы объявили num внутри цикла for с помощью let, тогда num внутри цикла for имеет совершенно другую область видимости, а num вне цикла for имеет другую область. Итак, это очень важный вопрос для собеседований.

Подъем с помощью let, const и var

Hoisting is a JavaScript mechanism where variables and function declarations are moved to the top of their scope before code execution

Если вы не поняли приведенный выше пример, это нормально.

У вас есть четкое представление о объявлении и инициализации переменных, о которых мы говорили выше.

//ES5
console.log(a); // undefined
var a = 5;

если вы запустите приведенный выше код, он выведет undefined, это означает, что он был объявлен, но не инициализирован

//ES6
console.log(a);  //ReferenceError: a is not defined
let a = 5;
and
console.log(a);  //ReferenceError: a is not defined
const a = 5;

let и const hoist, но вы не можете получить к ним доступ до того, как фактическое объявление будет оценено во время выполнения. Таким образом, в случае let и const вы не можете получить к ним доступ до объявления.

Более продвинутый с let и var

//ES5
for (var i = 0; i < 5; i++) {
  var btn = document.createElement('button');
  btn.appendChild(document.createTextNode('Button ' + i));
  btn.addEventListener('click', (function() {
     { console.log(i); };
  }));
  document.body.appendChild(btn);
}

Вопрос: какой будет результат при нажатии на кнопку 4?

Ответ: Ответ - 5, вы нажимаете любую кнопку, ответ - 5, потому что var имеет область действия или глобальную оценку, поэтому var i использует одно значение в каждом блоке цикла for.

for (let i = 0; i < 5; i++) {
  var btn = document.createElement('button');
  btn.appendChild(document.createTextNode('Button ' + i));
  btn.addEventListener('click', function(){ console.log(i); });
  document.body.appendChild(btn);
}

Вопрос: какой будет результат при нажатии на кнопку 4?

Ответ: Ответ 4, и вы нажимаете кнопку 0, ответ 0 и соответственно. let имеет область видимости блока, поэтому при каждом запуске цикла for изменяется блок, поэтому каждый блок имеет собственное значение i.

Результат ниже

1: var and let can change their value and const cannot change its value
2: var can be accessible anywhere in function but let and const can only be accessible inside the block where they are declared.
3: const cannot be declared only, you need to initialize it with declaration
4: let and const hoist but you cannot access them before the actual declaration is evaluated at runtime. So in case of let and const you cannot access them before declaration.

Жду ваших отзывов. Если вам это нравится, поделитесь им.