JavaScript funkciók
A JavaScript funkciók többnyire csak egy csomó kód beillesztésére képesek, amíg a hívás végrehajtásra vár. A függvények az idő múlásával új definíciókhoz, végrehajtási módszerekhez és szintaxisokhoz vezetnek. Ez a bejegyzés kiterjed a jelenlegi szerepekre, amelyeket a JavaScript funkciók eddig játszottak.
A funkciók különböző kifejeződési módjainak ismerete megnyitja a lehetőségét logika megvalósítása optimálisabb módon JavaScript-ben. Továbbá könnyebben válaszolhat az interjú kérdéseire.
Funkció kifejezések
Ha egyszerűen egy funkciót ad meg funkció
kulcsszó, opcionális paraméterek és kódrészlet, ez a funkció nyilatkozat.
Tegye ezt a nyilatkozatot egy JavaScript kifejezésbe (mint például egy hozzárendelés vagy aritmetikai kifejezés), ez lesz a funkció kifejezés.
// Funkció-deklarációs függvény_neve () ; // függvény kifejezés var függvénynév = függvény () ;
Az összes JavaScript-nyilatkozatot az értékelés során felemelték (felemelkedett a hatókörben). Ennélfogva a függvényhívás megírása, mielőtt a funkció-nyilatkozat rendben van (mivel a nyilatkozat mindenképpen felfelé kerül).
function_name (); // függvényhívás [WORKS] függvény_neve () ;
A funkciók kifejezéseit azonban nem emelik fel, mivel a funkciók a kifejezések részévé válnak, és nem önálló nyilatkozatok.
function_name (); // függvényhívás [WON'T WORK] var függvénynév = függvény () ;
Azonnal hívott funkciókifejezés (IIFE)
Ez egy funkciókifejezés, melynek kódja azonnal végrehajtásra kerül (csak egyszer, amikor értékelik). Létrehozhat egy egyszerűen hozzáadásával ()
(egy függvény hívásához használt szintaxis) egy funkció kifejezés után. Ezek névtelenek lehetnek (nincs neve, hogy ezt nevezzék).
Az alábbiakban a két leggyakoribb szintaxis az IIFE létrehozásához:
(opcionális_funkció_név () // test ());
és
(opció opcionális_funkció_név () // test) ();
A zárójelek a függvénydeklaráció körül egy kifejezéssé alakítják, majd hozzáadják ()
miután hívja a funkciót. Más módon is létrehozhat IIFE-t addig, amíg hozzáad ()
egy funkciókifejezés után (mint az alábbiakban), de az előnyös módszerek a fenti kettő.
// Az IIFE! Funkció létrehozásának néhány módja () / *… * / (); + funkció () / *… * / (); új funkció () / *… * /;
Az IIFE ideális olyan kódok írásához, amelyeknek csak egyszer kell végrehajtaniuk, névméretezésüket, bezárások létrehozását, privát változók létrehozását és így tovább. Az alábbiakban egy példa a IIFE használatára.
var page_language = (függvény () var lang; // kód az oldal visszatérési nyelvének megkereséséhez;) ();
Az oldal nyelvének beolvasása csak egyszer történik (lehetőleg az oldal betöltése után). Az eredmény tárolásra kerül page_language
későbbi használatra.
Mód
Ha egy függvény egy objektum tulajdonsága, akkor azt módszernek nevezzük. Mivel egy függvény egy objektum is, egy másik függvényen belüli funkció is egy módszer. Az alábbiakban példát mutatunk be egy objektumon belüli módszerre.
var calc = add: függvény (a, b) return a + b, al: függvény (a, b) return a-b console.log (calc.add (1,2)); // 3 konzol.log (calc.sub (80,2)); // 78
A hozzáad
és alatti
függvények calc
tárgy.
Most függvényen belül egy funkció:
function add (a) visszatérési funkció (b) return a + b; console.log (add (1) (2)); // A kimenet 3
A visszaküldött névtelen függvény funkciója hozzáad
.
Megjegyzés: Mivel a paraméter (egy
) a funkció hozzáad
A fenti példában a következő függvényhívás áll rendelkezésre, ezt a folyamatot hívjuk kikészítéséhez.
Constructors
Ha hozzáadja új
kulcsszót egy függvény előtt, és nevezzük, ez egy olyan kivitelezővé válik, amely példányokat hoz létre. Az alábbiakban egy példa arra, hogy a konstruktorokat használjuk a példányok létrehozására Gyümölcs
és az értékek hozzáadódnak mindegyikhez Gyümölcs
tulajdonságai.
funkció Gyümölcs () var név, család; // Tudományos név és család this.getName = függvény () visszatérő név;; this.setName = függvény (érték) name = value; this.getFamily = függvény () visszatérő család;; this.setFamily = függvény (érték) family = value; var apple = új gyümölcs (); apple.setName ("Malus domestica"); apple.setFamily ( "Rosaceae"); var orange = új gyümölcs (); orange.setName ("Citrus Ã?  ??¢Â ??  ?? sinensis "); orange.setFamily (" Rutaceae "); console.log (orange.getName ()); //" Citrus Ã?¢Â ??  ?? sinensis "console.log (apple.getName ()); //" Malus domestica "console.log (orange.getFamily ()); //" Rutaceae "
Nyíl funkciók (ES6 szabvány) [Csak Firefoxban]
Az ES6 Standard új funkció definíciója rövidebb szintaxist biztosít a funkciók kifejezéséhez. A szintaxis
() => / * test * /
Ez a minta funkció:
var sing = function () console.log ('éneklés…');
ugyanaz mint:
var sing = () => console.log ('éneklés…');
A nyíl funkciók névtelenek és nem rendelkeznek saját ez
érték, ez
belsejében ugyanaz lesz ez
a mellékelt kódban. Ezenkívül nem módosíthatja azt egy konstruktorral új
kulcsszó.
Ezek hasznosak, ha akarod ez
egy függvény belsejében ugyanaz, mint a külső, és rövidebb szintaxisa az írási kódot a funkció tömören belül tartja (mint az alábbiakban)
setInterval (függvény () console.log ('message'), 1000);
-ba
setInterval (() => console.log ('message'), 1000);
Generátor funkciók (ES6 szabvány) [Csak Firefoxban]
Az ES6 Standard egy másik új funkció definíciója a Generator Function. A generátor funkciók képesek a végrehajtás megállítására és folytatására. Szintaxisa:
funkció * függvénynév ()
vagy
funkció * függvénynév ()
A generátor funkciók iterátorokat hoznak létre. Az iterátor következő
ezután a generátor funkció belsejében lévő kód végrehajtására használjuk a módszert, amíg a hozam
kulcsszó elérve. Ezután az. \ T hozam
A kulcsszót a generátor funkció visszaküldi, és a végrehajtás leáll.
A generátor funkció újra végrehajtódik, amikor a következő
metódust a következőre hívják hozam
kulcsszó elérve. Miután az összes hozam
kifejezések végrehajtása, a hozamérték visszatér határozatlan
.
Az alábbiakban egy egyszerű példa:
függvény * generator_func (count) for (var i = 0; iÍme egy másik példa:
függvény * randomIncrement (i) hozam i + 3; i + 5; i + 10 hozam; i + 6 hozam; var itr = randomIncrement (4); console.log (itr.next (). érték); // 7 console.log (itr.next (). Érték); // 9 console.log (itr.next ().) Érték); // 14Van még egy
hozam*
kifejezés, amely átadja az értéket egy másik generátor funkciónakfunkció * gyümölcs (gyümölcs) hozam * zöldség (gyümölcs); hozam "Szőlő"; funkció * zöldség (gyümölcs) termés gyümölcs + "és spenót"; termés gyümölcs + "és brokkoli"; termés gyümölcs + "és uborka"; var itr = gyümölcsök ("Apple"); console.log (itr.next (). érték); // "Apple és spenót" console.log (itr.next (). Érték); // "Apple és brokkoli" console.log (itr.next (). Érték); // "Apple és uborka" console.log (itr.next (). Érték); // "Szőlő" console.log (itr.next (). Érték); //határozatlanA generátor funkciók akkor hasznosak, ha a kód egyenként, az egyes pontok szerinti értékeket akarja meghaladni, nem pedig egy tömbhálózaton keresztül..
Következtetés
Az alábbiakban felsoroltam a hivatkozások listáját, ahol a hivatkozásokra és a cikkekre vonatkozó hivatkozásokat találsz, amelyek külön-külön külön témakörökben mennek alapul. Mindkét ES6 standard funkció csak a Firefoxban működik.
Irodalom
- ECMAScript nyelv: funkciók és osztályok
- Azonnal hívott funkciókifejezés (IIFE)
- Az ES6 generátorok alapjai
- Nyíl funkciók
- Funkció - Mozilla fejlesztői hálózat