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

js es6 - strzałkowa funkcja - pytanie o konkretny przypadek

Object Storage Arubacloud
0 głosów
296 wizyt
pytanie zadane 25 maja 2017 w JavaScript przez crova Użytkownik (940 p.)

Witam,

bardzo proszę o wytłumaczenie dlaczego tak się dzieje, że w wypadku gdy zapomnimy o nawiasach okrągłych przy wyrzucaniu do konsoli wywołania funkcji zwracającej string:

let greetings = () => "Hello";

console.log(greetings); // poprawnie byłoby console.log(greetings());

 

konsola potraktuje nam cały fragment "() => "Hello"" jako zwracany string. To jest to jakaś luka w języku czy ma to jakieś praktyczne zastosowanie?

 

Pozdrawiam,

crova

komentarz 25 maja 2017 przez ScriptyChris Mędrzec (190,190 p.)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString

JavaScript automatycznie wywołuję tą metodę w określonych przypadkach:

JavaScript calls the toString method automatically when a Function is to be represented as a text value, e.g. when a function is concatenated with a string.

2 odpowiedzi

0 głosów
odpowiedź 25 maja 2017 przez adrian17 Ekspert (344,860 p.)

Nie rozumiem problemu. Akurat Chrome, bo pewnie na nim testujesz, dla strzałek i starych funkcji zachowuje się dokładnie tak samo:

let a = function(){return 1;}
let b = () => 2;
console.log(a) // function (){return 1;}
console.log(b) // () => 2

Printowanie funkcji da tekstowy zapis funkcji. Printowanie wyniku wywołania funkcji pokaże jej wynik.

komentarz 25 maja 2017 przez crova Użytkownik (940 p.)
Nie mam z tym problemu. Po prostu zastanawia mnie dlaczego to działa w ten sposób zamiast wywalać error.
komentarz 25 maja 2017 przez adrian17 Ekspert (344,860 p.)
Nie ma powodu, by dawać error. Wyświetlenie jakiejś tekstowej reprezentacji funkcji jest czasem pożądane.
0 głosów
odpowiedź 25 maja 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)
W momencie, gdy wpiszesz z nawiasami - nazwaFunkcji() - to ją wykonujesz i potem wypisujesz na konsolę jej wynik, w tym wypadku string Hello.

Gdy pominiesz nawiasy, to tak naprawdę nie wywołujesz funkcji, tylko zmienną, do której jest coś przypisane. W tym wypadku jest to funkcja. Jeśli coś wypisujesz na konsolę, to ta rzecz dostaje swoją tekstową reprezentację, żeby było można to zrobić.

I tak to ma w JS swoje praktyczne zastosowanie. W ten sposób można przekazać funkcję (a nie jej działanie) jako argument w miejscach, gdzie potrzebujemy działania asynchronicznego np. w eventListenerach.
komentarz 26 maja 2017 przez kap Stary wyjadacz (11,620 p.)

@Kornelia Kobiela Niekoniecznie tam gdzie potrzebujesz działania asynchronicznego - możesz przekazać gdziekolwiek.

komentarz 26 maja 2017 przez Kornelia Kobiela Nałogowiec (33,340 p.)
Wiem, podałam to jako przykład, może wyraziłam się nie ściśle.

Podobne pytania

0 głosów
2 odpowiedzi 678 wizyt
pytanie zadane 21 października 2018 w JavaScript przez `Krzychuu Stary wyjadacz (13,940 p.)
+1 głos
2 odpowiedzi 1,339 wizyt
pytanie zadane 10 lipca 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
2 odpowiedzi 641 wizyt
pytanie zadane 25 maja 2017 w JavaScript przez crova Użytkownik (940 p.)

92,543 zapytań

141,386 odpowiedzi

319,500 komentarzy

61,929 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...