Mājas lapa » Kodēšana » JavaScript funkcijas

    JavaScript funkcijas

    JavaScript funkcijas spēj vairāk nekā tikai pievienot ķekars kodiem, gaidot zvana izpildi. Laika gaitā funkcijas ir attīstījušās, radot jaunas definīcijas, izpildes metodes un sintakses. Šis amats aptvers dažas no pašreizējām funkcijām, kuras JavaScript funkcijas ir atskaņojušas līdz šim.

    Zinot dažādus veidus, kā izteikt un definēt funkcijas, ir iespēja loģikas īstenošana optimālākā veidā JavaScript. Jūs arī varat vieglāk atbildēt uz intervijas jautājumiem.

    Funkciju izteiksmes

    Kad vienkārši norādāt funkciju ar funkciju atslēgvārds, izvēles parametri un koda korpuss, tas ir a funkciju deklarāciju.

    Ievietojiet šo deklarāciju JavaScript izteiksmē (piemēram, uzdevumā vai aritmētiskajā izteiksmē), tā kļūst a funkciju izteiksme.

    // Funkcijas deklarācijas funkcija function_name () ; // Funkcijas izteiksme var function_name = function () ; 

    Novērtēšanas laikā tiek izvilktas visas JavaScript deklarācijas (pārvietotas augšpusē). Līdz ar to, pirms funkcijas deklarācija ir labi, rakstiet funkciju zvanu (jo deklarācija tiks pārvietota jebkurā gadījumā).

    function_name (); // funkciju zvans [WORKS] funkcija function_name () ; 

    Funkcijas izteiksmes tomēr netiek paceltas, jo funkcijas kļūst par izteiksmju daļu un nav atsevišķas deklarācijas.

    function_name (); // funkciju zvans [WON'T WORK] var funkciju_nosaukums = funkcija () ; 

    Nekavējoties izteikta funkcija (IIFE)

    Tā ir funkciju izpausme, kuras kods tiek izpildīts nekavējoties (tikai vienu reizi, kad tas tiek novērtēts). To var izveidot, vienkārši pievienojot () (sintakse, ko izmanto, lai izsauktu funkciju) uzreiz pēc funkcijas izpausmes. Tie var būt anonīmi (bez nosaukuma, lai to sauktu).

    Zemāk ir divas visbiežāk sastopamās sintakses, lai izveidotu IIFE:

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

    un

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

    Iekavās ap funkciju deklarāciju tā tiek pārvērsta par izteiksmi un pēc tam pievienota () pēc tam, kad tā izsauc funkciju. Jūs varat izmantot citus veidus, kā izveidot IIFE tik ilgi, cik jūs pievienojat () pēc funkcijas izpausmes (piemēram, zemāk), bet vēlamās metodes ir iepriekšminētās divas.

    // Daži veidi, kā izveidot IIFEs funkciju () / *… * / (); + funkcija () / *… * / (); jauna funkcija () / *… * /; 

    IIFE ir ideāli piemērots, lai rakstītu kodu, kam nepieciešams izpildīt tikai vienu reizi, nosaukumu izvietošana, slēgšana, privāto mainīgo izveidošana un vairāk. Zemāk ir piemērs IIFE lietošanai.

    var page_language = (funkcija () var lang; // kods, lai iegūtu lapas atgriešanas valodas valodu;) (); 

    Kods, lai iegūtu lapas valodu, tiek izpildīts tikai vienu reizi (vēlams pēc lapas ielādes). Rezultāts tiek saglabāts page_language vēlākai izmantošanai.

    Metodes

    Ja funkcija ir objekta īpašums, to sauc par metodi. Tā kā funkcija ir arī objekts, funkcija citā funkcijā ir arī metode. Zemāk ir piemērs objekta iekšējai metodei.

    var calc = add: funkcija (a, b) return a + b, sub: funkcija (a, b) return a-b console.log (calc.add (1,2)); // 3 konsole.log (aprēķināts apak. (80,2)); 78 

    The pievienot un sub funkcijas ir aprēķ objektu.

    Tagad funkcijai piemērā:

    funkcija add (a) atgriešanās funkcija (b) return a + b; console.log (pievienot (1) (2)); // Izeja ir 3 

    Atgrieztā anonīma funkcija ir funkcionēšanas metode pievienot.

    Piezīme: kopš parametra (a) funkcijas pievienot iepriekš minētajā piemērā ir pieejama šāda funkcijas atsaukšana, šāda veida process tiek saukts karija.

    Konstruktori

    Pievienojot jauns atslēgvārdu pirms funkcijas un to sauc, tas kļūst par konstruktoru, kas rada gadījumus. Zemāk ir piemērs, kur konstruktori tiek izmantoti, lai izveidotu gadījumus Augļi un vērtības tiek pievienotas katram Augļiīpašības.

    funkcija Augļi () var nosaukums, ģimene; // Zinātniskais nosaukums un ģimene this.getName = funkcija () atgriešanās nosaukums;; this.setName = funkcija (vērtība) name = value; this.getFamily = funkcija () atgriešanās ģimene;; this.setFamily = funkcija (vērtība) family = value;  var apple = jauns auglis (); apple.setName ("Malus domestica"); apple.setFamily ("Rosaceae"); var orange = jauns Augļi (); orange.setName ("Citrus Ã? Â?¢Â? sinensis "); orange.setFamily (" Rutaceae "); console.log (orange.getName ()); //" Citrus Ã?¢Â? sinensis "console.log (apple.getName ()); //" Malus domestica "console.log (orange.getFamily ()); //" Rutaceae " 

    Bultas funkcijas (ES6 standarts) [Tikai Firefox]

    Jauna funkcijas definīcija no ES6 Standard nodrošina īsāku sintaksi funkciju izteiksmei. Sintakse ir

    () => / * korpuss * / 

    Šī parauga funkcija:

    var sing = function () console.log ('dziedāšana ...'); 

    ir tāds pats kā:

    var sing = () => console.log ('dziedāšana…'); 

    Bultas funkcijas ir anonīmas un tām nav sava to vērtību, to iekšpusē tas būs tāds pats kā to pievienotajā kodā. Arī jūs nevarat to mainīt uz konstruktoru jauns atslēgvārdu.

    Tie ir noderīgi, kad vēlaties to iekšpusē funkcija, kas ir tāda pati kā ārpusē, un tā īsākā sintakse padara kodu rakstīšanas funkciju par īsu funkciju (piemēram, zemāk)

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

    vērā

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

    Ģeneratora funkcijas (ES6 standarts) [Tikai Firefox]

    Vēl viena jauna funkcijas definīcija no ES6 standarta ir ģeneratora funkcija. Ģeneratora funkcijas spēj apturēt un turpināt tās izpildi. Tās sintakse ir:

    funkcija * function_name ()  

    vai

    funkcija * function_name ()  

    Ģeneratora funkcijas rada iteratorus. Iterators ir Nākamais metode tiek izmantota, lai izpildītu kodu ģeneratora funkcijas iekšienē, līdz raža ir sasniegts atslēgvārds. Pēc tam, iterētā vērtība, ko identificē raža atslēgvārdu atdod ģeneratora funkcija un izpilde tiek apturēta.

    Ģeneratora funkcija atkal tiek izpildīta, kad Nākamais metode tiek izsaukta līdz nākamajai raža ir sasniegts atslēgvārds. Kad viss ir raža izteiksmes tiek izpildītas, atdeve tiek iegūta nenoteikts.

    Zemāk ir vienkāršs piemērs:

    funkcija * generator_func (skaits) for (var i = 0; i 

    Šeit ir vēl viens piemērs:

    funkcija * randomIncrement (i) iznākums i + 3; i + 5; i + 10; i + 6;  var itr = randomIncrement (4); console.log (itr.next ().) vērtība); // 7 console.log (itr.next ().) Vērtība); // 9 console.log (itr.next ().) Vērtība); 14 

    Ir arī raža * izteiksme, kas nodod vērtību citai ģeneratora funkcijai

    funkcija * augļi (augļi) raža * dārzeņi (augļi); raža "Vīnogas";  funkcija * veggies (augļi) ražas augļi + un spināti ”; ražas augļi + "un brokoļi"; ražas augļi + "un gurķi";  var itr = augļi ("Apple"); console.log (itr.next ().) vērtība); // "Apple un spināti" console.log (itr.next ().) Vērtība); // "Apple un brokoļi" console.log (itr.next ().) Vērtība); // "Apple un gurķi" console.log (itr.next ().) Vērtība); // "Vīnogas" console.log (itr.next ().) Vērtība); //nenoteikts 

    Ģeneratora funkcijas ir noderīgas, ja vēlaties, lai pa vienai no tām izvēlētos vēlamos koda punktus, pauzējot to, nevis vienā virzienā, piemēram, izmantojot lokalizāciju..

    Secinājums

    Esmu iekļāvis zemāk esošo atsauču sarakstu, kur atradīsiet saites uz atsaucēm un rakstiem, kas padziļināti aplūko dažādus tematus. Abas ES6 standarta funkcijas darbosies tikai Firefox.

    Atsauces

    • ECMAScript valoda: funkcijas un klases
    • Tūlītēja izsaukuma funkcija (IIFE)
    • ES6 ģeneratoru pamati
    • Bultas funkcijas
    • Funkcija - Mozilla izstrādātāju tīkls