Pagrindinis » Kodavimas » „JavaScript“ funkcijos

    „JavaScript“ funkcijos

    „JavaScript“ funkcijos gali daugiau nei tik pridėti kodų krūvį laukiant skambučio vykdymo. Laikui bėgant funkcijos sukėlė naujų apibrėžimų, vykdymo metodų ir sintaksų. Šis įrašas apims kai kurias dabartines „JavaScript“ funkcijų funkcijas.

    Žinant skirtingus būdų išreikšti ir apibrėžti funkcijas, atsiranda galimybė logikos įgyvendinimas optimaliau „JavaScript“. Taip pat galite lengviau atsakyti į pokalbio klausimus.

    Funkcijų išraiškos

    Kai tiesiog nurodote funkciją su funkcija raktinis žodis, pasirinktiniai parametrai ir kodo korpusas, tai a funkcija deklaraciją.

    Įdėkite šią deklaraciją į „JavaScript“ išraišką (kaip ir užduotyje arba aritmetinėje išraiška), ji tampa a funkcija išraiška.

    // Funkcijos deklaravimo funkcija funkcija_namas () ; // Funkcijos išraiška var function_name = function () ; 

    Vertinimo metu visos „JavaScript“ deklaracijos yra pakeltos (įtrauktos į taikymo sritį). Todėl prieš skirdami funkcijų deklaraciją parašykite funkcijų skambutį (nes deklaracija vis tiek pakils).

    function_name (); // funkcijos skambutis [WORKS] funkcija function_name () ; 

    Tačiau funkcijų išraiškos nėra keliamos, nes funkcijos tampa išraiškų dalimi ir nėra atskiros deklaracijos.

    function_name (); // funkcijų skambutis [WON'T WORK] var funkcijų pavadinimas = funkcija () ; 

    Nedelsiant imta veikti išraiška (IIFE)

    Tai funkcijos išraiška, kurios kodas iš karto įvykdomas (tik vieną kartą, kai jis įvertinamas). Galite sukurti ją tiesiog pridėdami () (sintaksė, naudojama funkcijai skambinti) iškart po funkcijos išraiškos. Jie gali būti anonimiški (be pavadinimo, kad jį būtų galima pavadinti).

    Žemiau pateikiamos dvi dažniausios IIFE kūrimo sintaksės:

    (funkcija option_function_name () // body ()); 

    ir

    (funkcija option_function_name () // body) (); 

    Skliausteliuose aplink funkcijų deklaraciją ji paverčiama išraiška ir pridedama () po to, kai jis vadina funkciją. Jūs galite naudoti kitus būdus, kaip sukurti IIFE, kol pridėsite () po funkcijos išraiška (kaip ir žemiau), tačiau pirmenybė teikiama pirmiau minėtiems metodams.

    // Kai kurie būdai sukurti IIFE funkciją () / *… * / (); + funkcija () / *… * / (); nauja funkcija () / *… * /; 

    IIFE idealiai tinka rašyti kodą, kuris turi būti vykdomas tik vieną kartą, vardų nustatymas, uždarymo kūrimas, privačių kintamųjų kūrimas ir kt. Žemiau pateikiamas IIFE naudojimo pavyzdys.

    var page_language = (funkcija () var lang; // kodas norint gauti puslapio grąžinimo lango kalbą;) (); 

    Kodas, kuriuo siekiama gauti puslapio kalbą, vykdomas tik vieną kartą (pageidautina po puslapio įkėlimo). Rezultatas išsaugomas page_language vėlesniam naudojimui.

    Metodai

    Kai funkcija yra objekto nuosavybė, ji vadinama metodu. Kadangi funkcija taip pat yra objektas, kita funkcija taip pat yra metodas. Žemiau pateikiamas objekto vidinio metodo pavyzdys.

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

    The papildyti ir sub funkcijos yra metodai apskaičiuota objektą.

    Dabar už funkciją pavyzdžio funkcijai:

    function add (a) return function (b) return a + b; console.log (pridėti (1) (2)); // Išėjimas yra 3 

    Grąžinta anoniminė funkcija yra veikimo būdas papildyti.

    Pastaba: Kadangi parametras (a) funkcijos papildyti aukščiau pateiktame pavyzdyje galima naudoti šią funkciją: šis procesas vadinamas karis.

    Konstruktoriai

    Kai pridėsite naujas raktinis žodis prieš funkciją ir ją vadina, jis tampa konstruktoriumi, kuris sukuria egzempliorius. Toliau pateikiamas pavyzdys, kai konstruktoriai naudojami kuriant „ Vaisiai ir kiekvienos reikšmės yra pridėtos Vaisiaisavybės.

    funkcija Vaisiai () var pavadinimas, šeima; // Mokslinis pavadinimas ir šeima this.getName = function () return name;; this.setName = funkcija (vertė) name = value; this.getFamily = funkcija () grįžti šeima;; this.setFamily = funkcija (vertė) family = value;  var apple = naujas vaisius (); apple.setName („Malus domestica“); apple.setFamily ("Rosaceae"); var orange = naujas Vaisiai (); orange.setName („Citrus Ã?¢Â? sinensis "); orange.setFamily (" Rutaceae "); console.log (orange.getName ()); //" Citrus Ã?¢Â? sinensis "console.log (apple.getName ()); //" Malus domestica "console.log (orange.getFamily ()); //" Rutaceae " 

    Rodyklės funkcijos (ES6 standartas) [Tik „Firefox“)

    Naujas funkcijų apibrėžimas iš ES6 standarto suteikia trumpesnę funkcijų išraiškos sintaksę. Sintaksė yra

    () => / * kūnas * / 

    Ši mėginio funkcija:

    var sing = function () console.log („dainavimas…“); 

    yra toks pat kaip:

    var sing = () => console.log („dainavimas…“); 

    Rodyklės funkcijos yra anoniminės ir neturi savo tai vertė, tai viduje jis bus toks pat kaip tai kodą. Be to, jūs negalite pakeisti jo su konstruktoriumi naujas raktinis žodis.

    Jie yra naudingi norint tai funkcijos, kurios yra tokios pačios, kaip ir išorėje, ir jos trumpesnė sintaksė daro kodo rašymo funkciją glaustą funkciją (kaip ir toliau)

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

    į

    setInterval (() => console.log ('message'), 1000); 

    Generatoriaus funkcijos (ES6 standartas) [Tik „Firefox“)

    Kitas naujas funkcijų apibrėžimas iš ES6 standarto yra generatoriaus funkcija. Generatoriaus funkcijos gali sustabdyti ir tęsti jos vykdymą. Jos sintaksė yra:

    funkcija * function_name ()  

    arba

    funkcija * function_name ()  

    Generatoriaus funkcijos sukuria iteratorius. Iteratorius Kitas tada naudojamas metodas, skirtas generatoriaus funkcijos viduje atlikti kodą iki derlius pasiekiamas raktinis žodis. Po to iteruota vertė, kurią nustatė derlius raktinis žodis grąžinamas generatoriaus funkcija ir vykdymas sustabdomas.

    Generatoriaus funkcija vėl vykdoma, kai Kitas metodas vadinamas iki kito derlius pasiekiamas raktinis žodis. Kai visa tai derlius išraiškos yra išvedamos, grąžina vertę neapibrėžtas.

    Žemiau yra paprastas pavyzdys:

    funkcija * generator_func (count) už (var i = 0; i 

    Kitas pavyzdys:

    funkcija * randomIncrement (i) išeiga i + 3; išeiga i + 5; išeiga i + 10; išeiga i + 6;  var itr = randomIncrement (4); console.log (itr.next ().) reikšmė); // 7 console.log (itr.next ().) Vertė); // 9 console.log (itr.next ().) Vertė); // 14 

    Taip pat yra derlius * išraiška, kuri perduoda vertę kitai generatoriaus funkcijai

    funkcija * vaisiai (vaisiai) derlius * daržovės (vaisiai); derlius „Vynuogės“;  funkcija * veggies (vaisiai) derlius vaisiai + ir špinatai “; vaisių derlius + "ir brokoliai"; vaisių derlius + "ir agurkai";  var itr = vaisiai („Apple“); console.log (itr.next ().) reikšmė); // "Apple ir špinatai" console.log (itr.next ().) Vertė); // "Apple ir brokoliai" console.log (itr.next ().) Vertė); // "Apple ir agurkai" console.log (itr.next ().) Vertė; // "Vynuogės" console.log (itr.next ().) Vertė); //neapibrėžtas 

    Generatoriaus funkcijos yra naudingos, jei norėsite pereiti per vertybes po vieną pagal pageidaujamą kodo tašką, sustabdydami ją, o ne vienoje vietoje, pavyzdžiui, kaip kilti per masyvą.

    Išvada

    Įtraukiau žemiau pateiktą nuorodų sąrašą, kuriame rasite nuorodas į nuorodas ir straipsnius, kurie išsamiai nagrinėjami įvairiomis temomis. Abi ES6 standartinės funkcijos šiuo metu veiks tik „Firefox“.

    Nuorodos

    • ECMAScript kalba: funkcijos ir klasės
    • Nedelsiant imta veikti išraiška (IIFE)
    • ES6 generatorių pagrindai
    • Rodyklės funkcijos
    • Funkcija - „Mozilla“ kūrėjų tinklas