• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jakie są różnice między funkcją regularną a funkcją strzałkową w JavaScript ?

Cloud VPS
+2 głosów
1,313 wizyt
pytanie zadane 8 sierpnia 2021 w JavaScript przez niezalogowany
Pytanie rekrutacyjne pojawiające się na rozmowach kwalifikacyjnych.

Jakbyście na nie odpowiedzieli w najbardziej konkretny i zwięzły sposób.

2 odpowiedzi

0 głosów
odpowiedź 8 sierpnia 2021 przez VBService Ekspert (256,600 p.)
wybrane 8 sierpnia 2021
 
Najlepsza

Może przez podanie cech funkcji strzałkowej będzie Tobie łatwiej wykazać różnice

  • Skrócony zapis (m. in. zamiana słowa function zapisem przypominającym strzałkę (fat arrow))
  • 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 callapply 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
1
komentarz 8 sierpnia 2021 przez niezalogowany

Dzięki Wielkie wink Jak zwykle extraordinary !

0 głosów
odpowiedź 8 sierpnia 2021 przez Wiciorny Ekspert (281,450 p.)

Poczytaj o kontekście, generalnie kontekst jest zmieniony dotyczy this, szczególnie dla obiektu 
https://typeofweb.com/this-js-kontekst-wywolania-funkcji/
Arrow funkcje nie wiążą własne this, zamiast tego dziedziczą jeden z zakresu nadrzędnego, który jest nazywany "leksykalne zakresu". Więc też tutaj jest inny zakres. 
https://www.codementor.io/@dariogarciamoya/understanding-this-in-javascript-with-arrow-functions-gcpjwfyuc

napisałem taki przykład :  w jednym wynik jest "undefined" w drugim jest poprawny. 

let me = {
      name: "Grzegorz Duda",
      thisInArrow: (name) => {

            console.log("My name is " + name); // tutaj nie będzie bindowania 'this'
      },
      thisInRegular() {
            console.log("My name is " + this.name); // tutaj this przyjmie poprawny kontekst
      }
};
me.thisInArrow();
me.thisInRegular();

przetestuj go sobie

komentarz 9 sierpnia 2021 przez Comandeer Guru (607,060 p.)
Twoje zachowanie jest po prostu żenujące w tym momencie. Forum jest od dyskusji. Skoro nie chcesz dyskutować, tylko zamiast tego jechać w ataki ad personam, to nie ma to sensu. To nie jest miejsce na takie dziwne zagrywki, jak atakowanie kogoś, kto zadaje pytanie, albo ignorowanie jego komentarzy, przy równoczesnym modyfikowaniu odpowiedzi, by te komentarze do niczego się nie odnosiły. Potraktuj to jako oficjalne ostrzeżenie ze strony administracji.
komentarz 9 sierpnia 2021 przez VBService Ekspert (256,600 p.)

A gdzie jest napisane, że mam z kimś dyskutować, to może jednak Ja wybieram z kim chcę dyskutować i kogo będę ignorował. smiley. Widzę, że się zrobił prywatny blog guru Comandeer?

komentarz 9 sierpnia 2021 przez Comandeer Guru (607,060 p.)
Jeszcze raz ostrzegam: na tym forum nie są tolerowane ataki ad personam.
komentarz 9 sierpnia 2021 przez VBService Ekspert (256,600 p.)

No i sam widzisz, patrz komentarz.

komentarz 9 sierpnia 2021 przez Comandeer Guru (607,060 p.)
To jest ostatnie ostrzeżenie, następnie zostaną wyciągnięte konsekwencje.

Podobne pytania

+1 głos
1 odpowiedź 2,017 wizyt
+1 głos
1 odpowiedź 1,784 wizyt
0 głosów
1 odpowiedź 227 wizyt

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...