Homepage » Coding » JavaScript funkciók

    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ölcstulajdonsá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); // 14 

    Van még egy hozam* kifejezés, amely átadja az értéket egy másik generátor funkciónak

    funkció * 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ározatlan 

    A 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