Domknięcia wyrażeń

Niestandardowy
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

Przestarzały Gecko 60 (Firefox 60 / Thunderbird 60 / SeaMonkey 2.57)
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Niestandardowe. Nie używać!
Składnia domknięcia wyrażeń jest przestarzałą funkcją specyficzną dla Firefoxa i została usunięta od Firefoxa 60. Dla obecnie tworzonych rozwiązań rozważ użycie funkcji strzałkowych.

Domknięcia wyrażeń są skróconą składnią dla zapisu prostych funkcji.

Składnia

function [nazwa]([param1[, param2[, ..., paramN]]])
   wyrażenie

Parametry

nazwa
Nazwa funkcji. Może być pominięta w przypadku, gdy funkcja jest anonimowa. Nazwa jest lokalna i ograniczona jedynie do ciała funkcji.
paramN
Nazwa argumentu, który ma być przekazany do funkcji. Funkcja może mieć do 255 argumentów.
wyrażenie
Wyrażenie, które zawiera ciało funkcji.

Opis

Ten dodatek nie jest niczym więcej niż skróconą notacją dla prostych funkcji, która daje językowi coś podobnego do typowej notacji lambda.

JavaScript 1.7 i starsze:

function(x) { return x * x; }

JavaScript 1.8:

function(x) x * x

Taka składnia pozwala na pominięcie nawiasów klamrowych i wyrażenia return, czyniąc je niejawnymi. Poza skróceniem zapisu, nie ma innych korzyści z pisania kodu w ten sposób.

Przykłady

Skrócony zapis dla dowiązywania obserwatorów zdarzeń (ang. event listeners):

 document.addEventListener('click', function() false, true);

Użycie tej notacji z niektórymi z funkcji strzałkowych z JavaScript 1.6:

elems.some(function(elem) elem.type == 'text');

Wsparcie przeglądarek

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Expression closures
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support 3 — 60IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support 4 — 60Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

Zobacz też