Domovská » Kódování » Funkce JavaScriptu

    Funkce JavaScriptu

    Funkce JavaScriptu jsou schopny více než pouhým uzavřením spousty kódů při čekání na provedení hovoru. Funkce se postupem času vyvíjely, což vedlo k novým definicím, prováděcím metodám a syntaxím. Tento příspěvek bude pokrýt některé ze současných rolí JavaScriptových funkcí, které dosud hrály.

    Znát různé způsoby vyjadřování a definování funkcí otevírá možnost implementace logiky optimálním způsobem v JavaScriptu. Také můžete být schopni odpovědět na otázky pohovoru snadněji.

    Funkční výrazy

    Když jednoduše zadáte funkci funkce klíčové slovo, volitelné parametry a tělo kódu, je to funkce prohlášení.

    Dej tuto deklaraci do výrazu JavaScript (jako v přiřazení nebo aritmetickém výrazu), stane se funkce výraz.

    // Funkce deklarace funkce function_name () ; // Funkční výraz var function_name = function () ; 

    Během vyhodnocování jsou všechny deklarace JavaScriptu zvednuty (posunuty nahoru). Proto je volání funkce funkční před tím, než je deklarace funkce v pořádku (protože deklarace bude stejně přesunuta nahoru).

    function_name (); // function call [WORKS] funkce function_name () ; 

    Funkční výrazy však nejsou zvednuty, protože funkce se stávají součástí výrazů a nejsou samostatnými deklaracemi.

    function_name (); // volání funkce [WON'T WORK] var function_name = function () ; 

    Okamžitě vyvolaný výraz funkce (IIFE)

    Je to funkční výraz, jehož kód se okamžitě provede (pouze jednou, když je vyhodnocen). Můžete si ho vytvořit jednoduchým přidáním () (syntaxe používaná pro volání funkce) přímo po výrazu funkce. Mohou být anonymní..

    Níže jsou uvedeny dvě nejčastější syntaxe pro vytvoření služby IIFE:

    (funkce optional_function_name () // body ()); 

    a

    (funkce optional_function_name () // body) (); 

    V závorkách kolem deklarace funkce je převeden na výraz a poté přidán () po volání funkce. Můžete použít jiné způsoby, jak vytvořit IIFE tak dlouho, jak budete přidávat () po funkčním vyjádření (jako je uvedeno níže), ale výhodnými metodami jsou výše uvedené dva způsoby.

    // Některé způsoby, jak vytvořit funkci IIFEs! () / *… * / (); + function () / *… * / (); nová funkce () / *… * /; 

    IIFE je ideální pro psaní kódu, který je třeba provést pouze jednou, jmenný prostor, vytváření uzávěrů, vytváření soukromých proměnných a další. Níže je uveden příklad použití IIFE.

    var page_language = (function () var lang; // Kód pro získání jazyka návratového jazyka;) (); 

    Kód, aby se jazyk stránky spustil pouze jednou (nejlépe po načtení stránky). Výsledek je uložen v page_language pro pozdější použití.

    Metody

    Když je funkce vlastnost objektu, nazývá se metoda. Protože funkce je také objekt, funkce uvnitř jiné funkce je také metoda. Níže je uveden příklad metody uvnitř objektu.

    var calc = add: function (a, b) return a + b, sub: funkce (a, b) return a-b console.log (calc.add (1,2)); // 3 console.log (calc.sub (80,2)); 78 

    přidat a sub funkce jsou metody calc objekt.

    Nyní pro funkci v rámci funkčního příkladu:

    function add (a) return function (b) return a + b; console.log (přidat (1) (2)); // Výstup je 3 

    Vrácená anonymní funkce je metoda funkce přidat.

    Poznámka: Od parametru (A) funkce přidat ve výše uvedeném příkladu je k dispozici pro následující vyvolání funkce, tento typ procesu je volán kari.

    Konstruktory

    Když přidáte Nový klíčové slovo před funkcí a volání, stává se konstruktorem, který vytváří instance. Níže je uveden příklad, ve kterém jsou konstruktory konstruovány instance Ovoce a hodnoty se přidávají ke každému Ovocevlastnosti.

    funkce Fruit () var name, rodina; // Vědecké jméno a rodina this.getName = function () return name;; this.setName = function (value) name = hodnota; this.getFamily = function () návratová rodina;; this.setFamily = function (value) family = hodnota;  var apple = nový Ovoce (); apple.setName ("Malus domestica"); apple.setFamily ("Rosaceae"); var orange = nový Ovoce (); orange.setName ("Citrus à ??  ?? â ?? sinensis "); orange.setFamily (" Rutaceae "); console.log (orange.getName ()); //" Citrus à ??  ?? â ?? sinensis "console.log (apple.getName ()); //" Malus domestica "console.log (orange.getFamily ()); //" Rutaceae " 

    Funkce Arrow (Standard ES6) [Pouze ve Firefoxu]

    Definice nové funkce z ES6 Standard poskytuje kratší syntaxi pro výraz funkce. Syntaxe je

    () => / * tělo * / 

    Tato ukázková funkce:

    var sing = function () console.log ('zpěv…'); 

    je stejné jako:

    var sing = () => console.log ('zpěv…'); 

    Funkce šipek jsou anonymní a nemají vlastní tento hodnota, tento uvnitř to bude stejné jako tento v přiloženém kódu. Nelze ji také změnit na konstruktor s Nový klíčové slovo.

    Jsou užitečné, když chcete tento uvnitř funkce, která má být stejná jako venku a její kratší syntaxe dělá kód pro funkci zápisu v rámci funkce stručné (jako je uvedeno níže)

    setInterval (function () console.log ('message'), 1000); 

    do

    setInterval (() => console.log ('zpráva'), 1000); 

    Funkce generátoru (standard ES6) [Pouze ve Firefoxu]

    Další novou definicí funkce z ES6 Standard je funkce generátoru. Funkce generátoru jsou schopny zastavit a pokračovat v provádění. Jeho syntaxe je:

    funkce * název_funkce ()  

    nebo

    funkce * název_funkce ()  

    Generátorové funkce vytvářejí iterátory. Iterátor další Metoda je pak použita k provedení kódu uvnitř funkce generátoru až do výtěžek klíčového slova. Po tom, iterovaná hodnota identifikovaná výtěžek klíčové slovo je vráceno funkcí generátoru a provedení je zastaveno.

    Funkce generátoru se opět provede, když se další zavolá až do dalšího výtěžek klíčového slova. Jednou všichni výtěžek výrazy jsou vráceny undefined.

    Níže je jednoduchý příklad:

    function * generator_func (count) pro (var i = 0; i 

    Zde je další příklad:

    funkce * randomIncrement (i) výnos i + 3; výtěžek i + 5; výtěžek i + 10; výtěžek i + 6;  var itr = randomIncrement (4); console.log (itr.next (). hodnota); // 7 console.log (itr.next (). Hodnota); // 9 console.log (itr.next (). Hodnota); // 14 

    K dispozici je také výtěžek* výraz, který předává hodnotu jiné funkci generátoru

    funkce * ovoce (ovoce) výnos * vegetariáni (ovoce); výtěžek "Hrozny";  funkce * vegetariáni (ovoce) výnos ovoce + "a špenát"; výnos ovoce + "a brokolice"; výnos ovoce + "a okurka";  var itr = ovoce ("Apple"); console.log (itr.next (). hodnota); // "Apple a Spinach" console.log (itr.next (). Hodnota); // "Apple a Broccoli" console.log (itr.next (). Hodnota); // "Apple a okurka" console.log (itr.next (). Hodnota); // "Hrozny" console.log (itr.next (). Hodnota); // undefined 

    Generátorové funkce jsou užitečné, chcete-li procházet hodnotami jeden po druhém ve vašem upřednostňovaném místě v kódu tím, že je pozastavíte, a ne v jednom kroku jako při smyčce přes pole.

    Závěr

    Níže uvádíme seznam odkazů, kde naleznete odkazy na odkazy a články, které se podrobně zabývají různými tématy. Obě standardní funkce ES6 budou v tuto chvíli fungovat pouze ve Firefoxu.

    Reference

    • Jazyk ECMAScript: Funkce a třídy
    • Okamžitě vyvolaný funkční výraz (IIFE)
    • Základy generátorů ES6
    • Funkce šipek
    • Funkce - Mozilla Developer Network