• 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

VPS Starter Arubacloud
0 głosów
293 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,100 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,100 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 659 wizyt
pytanie zadane 21 października 2018 w JavaScript przez `Krzychuu Stary wyjadacz (13,940 p.)
+1 głos
2 odpowiedzi 1,321 wizyt
pytanie zadane 10 lipca 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
0 głosów
2 odpowiedzi 623 wizyt
pytanie zadane 25 maja 2017 w JavaScript przez crova Użytkownik (940 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...