Funkcja strzałkowa
Funkcja strzałkowa to skrócony zapis wyrażenia funkcyjnego:
const myFn = function() {
}
[3,1,2].sort(function(a, b) {
})
//to samo co powyżej mogę zapisać za pomocą skróconego zapisu:
const myFn = () => {
}
[3,1,2].sort((a, b) => {
})Jak widzisz główną różnicą jest zamiana słowa function zapisem przypominającym strzałkę (fat arrow).
Skrócony zapis
Przy skracaniu zapisu obowiązuje nas kilka dość prostych zasad.
Jeżeli funkcja wymaga tylko jednego parametru, wtedy mogę (ale nie muszę!) pominąć nawiasy:
const myF = function(a) {
console.log(a * a);
}
const myF = a => {
console.log(a * a);
}Jeżeli parametrów jest więcej, lub nie ma żadnego, wtedy nawiasy muszą zostać:
Jeżeli funkcja ma tylko jedną instrukcję, mogę pominąć też klamry:
A dodatkowo jeżeli jedyną instrukcją jest instrukcja return, także i tego słowa możemy się pozbyć:
Natomiast jeżeli funkcja ma więcej instrukcji - klamry muszą pozostać:
Jeżeli jedyną instrukcją jest zwracanie obiektu, wtedy zachodzi konflikt między redukcją klamer, a klamrami obiektu. W takim przypadku zwracany obiekt trzeba objąć nawiasami:
Dodatkowe cechy
Skrócony zapis to nie wszystko, co oferuje funkcja strzałkowa.
Dodatkowymi cechami, które odróżniają je od klasycznych funkcji są:
Funkcje strzałkowe nie mają wiązania this i super. Dlatego nie powinniśmy ich używać do definiowania metod w obiektach i klasach
Nie posiadają właściwości arguments i new.target
Użycie dla nich call, apply i bind nie da oczekiwanych rezultatów. Wynika to właśnie z faktu, że nie ma tutaj wiązania this
Nie można ich używać jako konstruktory
Nie wolno używać w nich yield
Last updated