Reaguj Funkcje strzałek ES6


Funkcje strzałek

Funkcje strzałkowe pozwalają nam napisać krótszą składnię funkcji:

Zanim:

hello = function() {
  return "Hello World!";
}

Z funkcją strzałki:

hello = () => {
  return "Hello World!";
}

Robi się coraz krócej! Jeśli funkcja ma tylko jedną instrukcję, a instrukcja zwraca wartość, możesz usunąć nawiasy i słowo returnkluczowe:

Funkcje strzałek domyślnie zwracają wartość:

hello = () => "Hello World!";

Uwaga: Działa to tylko wtedy, gdy funkcja ma tylko jedną instrukcję.

Jeśli masz parametry, przekazujesz je w nawiasach:

Funkcja strzałki z parametrami:

hello = (val) => "Hello " + val;

W rzeczywistości, jeśli masz tylko jeden parametr, możesz również pominąć nawiasy:

Funkcja strzałki bez nawiasów:

hello = val => "Hello " + val;
this


w3schools CERTIFIED . 2022

Zostać certyfikowanym!

Uzupełnij moduły React, wykonaj ćwiczenia, podejdź do egzaminu i uzyskaj certyfikat w3schools!!

95 $ ZAPISZ

Co z this?

Obsługa thisjest również inna w funkcjach strzałek w porównaniu do zwykłych funkcji.

Krótko mówiąc, z funkcjami strzałek nie ma powiązania this.

W zwykłych funkcjach thissłowo kluczowe reprezentowało obiekt, który wywołał funkcję, którym może być okno, dokument, przycisk lub cokolwiek innego.

W przypadku funkcji strzałek thissłowo kluczowe zawsze reprezentuje obiekt, który zdefiniował funkcję strzałki.

Przyjrzyjmy się dwóm przykładom, aby zrozumieć różnicę.

Oba przykłady wywołują metodę dwukrotnie, najpierw podczas wczytywania strony i ponownie, gdy użytkownik kliknie przycisk.

Pierwszy przykład używa zwykłej funkcji, a drugi przykład używa funkcji strzałki.

Wynik pokazuje, że pierwszy przykład zwraca dwa różne obiekty (okno i przycisk), a drugi przykład zwraca dwukrotnie obiekt Header.

Przykład

W przypadku zwykłej funkcji thisreprezentuje obiekt, który wywołał funkcję:

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

//Regular function:
  changeColor = function() {
    document.getElementById("demo").innerHTML += this;
  }
}

const myheader = new Header();

//The window object calls the function:
window.addEventListener("load", myheader.changeColor);

//A button object calls the function:
document.getElementById("btn").addEventListener("click", myheader.changeColor);

Przykład

Z funkcją strzałki thisreprezentuje obiekt Header bez względu na to, kto wywołał funkcję:

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

//Arrow function:
  changeColor = () => {
    document.getElementById("demo").innerHTML += this;
  }
}

const myheader = new Header();


//The window object calls the function:
window.addEventListener("load", myheader.changeColor);

//A button object calls the function:
document.getElementById("btn").addEventListener("click", myheader.changeColor);

Zapamiętaj te różnice podczas pracy z funkcjami. Czasami zachowanie zwykłych funkcji jest tym, czego chcesz, jeśli nie, użyj funkcji strzałek.


Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Wypełnij tę funkcję strzałki:

hello =  "Hello World!";