Перейти к содержимому

Объявление переменных

В ES6 переменные объявляют так:

let и const. С помощью let объявляем обычные переменные. С помощью const - условно константы. const не полноценная константа и с помощью манипуляций можно поменять значение. Но так делать не нужно ) var не применяем!

Разницу в работе let, const и var можно увидеть в коде после обработки библиотекой babel. var - видимость в пределах функции, а let, const - видимость внутри блока кода {}

Примеры:

if(true) {
var a='ES5';
}
console.log(a);
if(true) {
var a='ES5';
}
console.log(a);
if(true) {
let aa='ES5';
const aaa='ES5'
}
 console.log(aa);
if (true) {
var _aa='ES5';
var _aaa='ES5';
}
console.log(aa);
console.log(aaa);

Что еще примечательного изменилось в переменных? "Поднятие вверх"(Hoisting)

Пример:
console.log(b);
var b = 6;
b = undefined;
console.log(b);
let b = 6; // или const b = 6
 ошибка b is not defined
Рассмотрим одну из типовых задач на собеседовании:
html
<body>
<button></button>
<button></button>
<button></button>
<button></button>
<button></button>
<scriptsrc="dist/common.js"></script>
</body>
js
var buttons = document.querySelectorAll('button');
for(var i = 0; i < buttons.length; i++){
varbutton=buttons[i];
button.innerText=i;
button.onclick=function(){
console.log(i)
}
}

В данной задаче в console.log() выводится не номер нажатой кнопку и всегда число 5. Нужно исправить.

В ES5 это решалось с помощью "замыкания"

var buttons = document.querySelectorAll('button');
for(var i = 0; i < buttons.length; i++){
varbutton=buttons[i];
button.innerText=i;
button.onclick=function(x){
returnfunction(){
console.log(x);
};
}(i);
}
В ES6 в цикле используем let вместо var
var buttons = document.querySelectorAll('button');
for (let i = 0; i < buttons.length; i++) {
varbutton=buttons[i];
button.innerText=i;
button.onclick=function() {
console.log(i);
};
};

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *