НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
React. W3Schools українською. Уроки для початківців

En

React ES6 Функції стрілок


Функції стрілок

Функції зі стрілками дозволяють нам писати коротший синтаксис функції:

Приклад

Раніше:

hello = function() {
return "Hello World!";
}
Спробуйте самі »

Приклад

Із функцією стрілок:

hello = () => {
return "Hello World!";
}
Спробуйте самі »

Код стає коротшим! Якщо функція має лише одну інструкцію, й інструкція повертає значення, ви можете видалити дужки та ключове слово return:

Приклад

Функції стрілок повертають значення за замовчуванням:

hello = () => "Hello World!";
Спробуйте самі »

Примітка: Це працює, лише якщо функція має тільки одну інструкцію.

Якщо у вас є параметри, ви передаєте їх у круглі дужки:

Приклад

Функція стрілки з параметрами:

hello = (val) => "Hello " + val;
Спробуйте самі »

Фактично, якщо у вас є лише один параметр, ви також можете пропустити дужки:

Приклад

Функція стрілки без дужок:

hello = val => "Hello " + val;
this Спробуйте самі »

Що про this?

Обробка this також відрізняється у функціях зі стрілками у порівнянні зі звичайними функціями.

Коротше кажучи, із функціями стрілок немає прив’язки this.

У звичайних функціях ключове слово this представляє об’єкт, який викликає функцію, якою може бути вікно, документ, кнопка чи щось інше.

З функціями стрілок ключове слово this завжди представляє об’єкт, який визначив функцію стрілок.

Давайте розглянемо два приклади, щоб зрозуміти різницю.

Обидва приклади викликають метод двічі, спочатку під час завантаження сторінки та ще раз, коли користувач натискає кнопку.

У першому прикладі використовується звичайна функція, а в другому — функція зі стрілкою.

Результат показує, що перший приклад повертає два різні об’єкти (вікно та кнопку), а другий приклад двічі повертає об’єкт Header.

Приклад

У звичайній функції this представляє об’єкт, який викликав функцію:

class Header {
constructor() {
this.color = "Red";
}

//Звичайна функція:
changeColor = function() {
document.getElementById("demo").innerHTML += this;
}
}

const myheader = new Header();

//Об’єкт вікна викликає функцію:
window.addEventListener("load", myheader.changeColor);

//Об’єкт кнопки викликає функцію:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Спробуйте самі »

Приклад

За допомогою функції зі стрілкою this представляє об’єкт Header незалежно від того, хто викликав функцію:

class Header {
constructor() {
this.color = "Red";
}

//Функція стрілки:
changeColor = () => {
document.getElementById("demo").innerHTML += this;
}
}

const myheader = new Header();

//Об’єкт вікна викликає функцію:
window.addEventListener("load", myheader.changeColor);

//Об’єкт кнопки викликає функцію:
document.getElementById("btn").addEventListener("click", myheader.changeColor);
Спробуйте самі »

Пам’ятайте про ці відмінності, коли працюєте з функціями. Іноді поведінка звичайних функцій така, як ви хочете, якщо ні, використовуйте функції зі стрілками.


Перевірте себе за допомогою вправ

Вправа:

Виконайте цю функцію стрілки:

hello =  "Hello World!";