funktiot

posted in: Articles | 0

melko usein meidän täytyy suorittaa samanlainen toiminta monissa skriptin paikoissa.

esimerkiksi pitää näyttää mukavan näköinen viesti, Kun vierailija kirjautuu sisään, kirjautuu ulos ja ehkä jonnekin muualle.

toiminnot ovat ohjelman tärkeimmät ”rakennuspalikat”. Niiden avulla koodia voi kutsua monta kertaa ilman toistoa.

Olemme jo nähneet esimerkkejä siitä, rakennettu-in toimintoja, kuten alert(message), prompt(message, default) ja confirm(question). Mutta voimme luoda myös omia toimintoja.,

Funktioilmoitus

funktion luomiseksi voimme käyttää funktioilmoitusta.

Se näyttää tältä:

function showMessage() { alert( 'Hello everyone!' );}

function avainsana menee ensin, sitten menee funktion nimi, sitten luettelo parametrit ovat sulkeissa (pilkulla erotettuna, tyhjä yllä olevassa esimerkissä) ja lopuksi koodi toiminto, myös nimeltään ”toiminto elin”, aaltosulkeiden välissä.,

function name(parameters) { ...body...}

uusi funktio voidaan kutsua sen nimellä: showMessage().

esimerkiksi:

function showMessage() { alert( 'Hello everyone!' );}showMessage();showMessage();

call showMessage() suorittaa code toiminta. Tässä näemme viestin kaksi kertaa.

Tämä esimerkki osoittaa selvästi yksi tärkeimmistä tarkoituksiin toimintoja: voit vähentää koodin päällekkäisyyksiä.,

Jos joskus täytyy muuttaa viestiä tai tapaa, jolla se näytetään, riittää koodin muokkaaminen yhteen paikkaan: funktio, joka sen lähettää.

paikalliset muuttujat

funktion sisällä ilmoitettu muuttuja näkyy vain kyseisen funktion sisällä.

esimerkiksi:

Ulompi muuttujat

– toimintoa voi käyttää ulko-muuttuja, esim:

let userName = 'John';function showMessage() { let message = 'Hello, ' + userName; alert(message);}showMessage(); // Hello, John

– toiminto on täysi pääsy ulko-muuttuja. Se voi myös muokata sitä.,

esimerkiksi:

ulompaa muuttujaa käytetään vain, jos paikallista muuttujaa ei ole.

Jos funktion sisällä ilmoitetaan saman niminen muuttuja, se varjostaa ulompaa. Esimerkiksi alla olevassa koodissa funktio käyttää paikallista userName. Ulompi yksi ei huomioida:

Globaaleja muuttujia

Muuttujat julisti ulkopuolella mitään toimintoa, kuten ulko – userName koodi edellä, kutsutaan maailmanlaajuinen.

globaalit muuttujat näkyvät mistä tahansa funktiosta (paitsi jos paikalliset varjostavat).,

on hyvä käytäntö minimoida globaalien muuttujien käyttö. Nykyaikaisella koodilla on vain vähän tai ei lainkaan globaaleja. Useimmat muuttujat asuvat funktioissaan. Joskus niistä voi kuitenkin olla hyötyä projektitason tietojen tallentamisessa.

Parametrit

Voimme välittää mielivaltaisia tietoja toimintoja käyttämällä parametrit (myös kutsutaan funktion argumentit) .

alla olevassa esimerkissä funktiolla on kaksi parametria: from ja text.,

Kun toiminto on nimeltään rivit (*) ja (**), arvot kopioidaan paikallisia muuttujia from ja text. Sitten funktio käyttää niitä.

Tässä on yksi esimerkki: meillä on muuttuja from ja siirtää sen toimintaa., Huomaa: toiminto muuttaa from, mutta muutos ei ole nähnyt ulkopuolella, koska funktio saa aina kopion arvo:

oletusarvot

Jos parametri ei ole annettu, niin sen arvo tulee undefined.

esimerkiksi, edellä mainittu toiminto showMessage(from, text) voidaan kutsua yhdellä perustelu:

showMessage("Ann");

Se ei ole virhe. Tällainen puhelu lähtisi "*Ann*: undefined"., Ei ole text, niin oletetaan, että text === undefined.,

Jos haluamme käyttää ”default” text tässä tapauksessa, voimme määrittää sen jälkeen =:

function showMessage(from, text = "no text given") { alert( from + ": " + text );}showMessage("Ann"); // Ann: no text given

Nyt, jos text parametri ei ole kulunut, se saa arvon "no text given"

Täältä "no text given" on merkkijono, mutta se voi olla monimutkaisempi ilmaisu, joka on vain arvioitu ja määritetty, jos parametri puuttuu., Niin, tämä on myös mahdollista.

Arviointi default parametrit

JavaScript, oletuksena parametri on arvioitava joka kerta, kun funktiota kutsutaan ilman kunkin parametrin.

yllä olevassa esimerkissä anotherFunction() kutsutaan joka kerta showMessage() kutsutaan ilman text parametri.

Vaihtoehtoinen oletus parametrit

Joskus on järkevää asettaa oletusarvot parametreja ei toimintaa-ilmoitus, mutta myöhemmässä vaiheessa, sen toteutuksen aikana.,parametri, voimme verrata sitä undefined:

function showMessage(text) { if (text === undefined) { text = 'empty message'; } alert(text);}showMessage(); // empty message

…Tai sitten voimme käyttää || operaattori:

// if text parameter is omitted or "" is passed, set it to 'empty'function showMessage(text) { text = text || 'empty'; ...}

Moderni JavaScript-moottorit tukea nullish sommittelee operaattori ??, se on parempi, kun falsy arvot, kuten 0, pidetään säännöllisesti:

Paluu arvo

funktio voi palauttaa arvon takaisin kutsuvan koodin tuloksena.,

yksinkertaisin esimerkki voisi olla funktio, joka kuvaa kaksi-arvot:

function sum(a, b) { return a + b;}let result = sum(1, 2);alert( result ); // 3

direktiivi return voi olla missä tahansa toiminnon. Kun suoritus saavuttaa se, toiminto pysähtyy, ja arvo on palauttaa kutsuvan koodin (osoitetut result edellä).

return saattaa esiintyä useita esiintymiä yhdessä funktiossa. Esimerkiksi:

on mahdollista käyttää return ilman arvoa., That causes the function to exit immediately.

For example:

function showMovie(age) { if ( !checkAge(age) ) { return; } alert( "Showing you the movie" ); // (*) // ...}

In the code above, if checkAge(age) returns false, then showMovie won’t proceed to the alert.,

älä Koskaan lisää rivinvaihto välillä return arvo

pitkään ilmaisun return se voi olla houkuttelevaa laittaa se erillinen linja, kuten tämä:

return (some + long + expression + or + whatever * f(a) + f(b))

Se ei toimi, koska JavaScript olettaa, puolipiste jälkeen return. Se toimii sama kuin:

return; (some + long + expression + or + whatever * f(a) + f(b))

Niin, se tehokkaasti tulee tyhjä palata.,

Jos haluamme palasi ilmaisun kääri yli useita rivejä, meidän pitäisi aloittaa se samalla linjalla kuin return. Tai ainakin laittaa avaaminen suluissa on seuraava:

return ( some + long + expression + or + whatever * f(a) + f(b) )

Ja se toimii juuri niin kuin olemme odottaneet sitä.

funktion nimeäminen

funktiot ovat toimintoja. Heidän nimensä on siis yleensä verbi. Sen pitäisi olla lyhyt, mahdollisimman tarkkoja ja kuvata, mitä toiminto tekee, niin, että joku lukee koodin saa viitteitä siitä, mitä toiminto tekee.,

on yleinen käytäntö aloittaa funktio verbaalisella etuliitteellä, joka kuvaa toimintaa epämääräisesti. Joukkueessa täytyy olla sopimus etuliitteiden merkityksestä.

esimerkiksi toiminnot, jotka alkavat "show" yleensä näyttää jotain.

– Toiminnon alkaen.

Esimerkkejä tällaisista nimistä:

etu paikka, vilkaisu funktion nimi antaa ymmärtää, millaista työtä se tekee ja millaista arvoa se palaa.,

yksi funktio – yksi toiminto

funktion tulee tehdä juuri niin kuin sen nimi viittaa, ei enempää.

kaksi itsenäistä toimintoa ansaitsevat yleensä kaksi toimintoa, vaikka ne yleensä kutsutaan yhteen (tällöin voimme tehdä 3.funktion, joka kutsuu näitä kahta).

muutamia esimerkkejä rikkoo tätä sääntöä:

  • getAge – olisi huono, jos se näyttää alert ikä (pitäisi vain saada).,
  • createForm – olisi huono, jos se muuttaa asiakirjan lisääminen-lomake (pitäisi vain luoda se ja palauta).
  • checkPermission – olisi huono, jos se näyttää access granted/denied viesti (pitäisi vain suorittaa tarkistaa ja palauttaa tuloksen).

nämä esimerkit olettavat etuliitteiden yhteisiä merkityksiä. Sinä ja tiimisi voitte vapaasti sopia muista merkityksistä, mutta yleensä ne eivät ole kovin erilaisia. Joka tapauksessa, sinun pitäisi olla vankka käsitys siitä, mitä etuliite tarkoittaa, mitä etuliite funktio voi ja ei voi tehdä., Kaikkien same-prefiksattujen toimintojen tulisi noudattaa sääntöjä. Ja joukkueen pitäisi jakaa tietoa.

Ultrashort funktioiden nimet

Toimintoja, joita käytetään hyvin usein, joskus on ultrashort nimet.

esimerkiksi jQuery framework määrittelee funktion, jossa on $. Lodashin kirjaston ydintoiminto on nimeltään _.

nämä ovat poikkeuksia. Yleensä funktioiden nimien tulee olla ytimekkäitä ja kuvailevia.

funktiot == Kommentit

funktioiden pitäisi olla lyhyitä ja tehdä tasan yksi asia., Jos se on iso, ehkä funktio kannattaa jakaa muutamaan pienempään funktioon. Joskus tämän säännön noudattaminen ei ehkä ole niin helppoa, mutta se on ehdottomasti hyvä asia.

erillinen toiminto ei ole vain helpompi testata ja debug – sen olemassaolo on hyvä kommentti!

vertaa esimerkiksi kahta funktiota showPrimes(n) alla. Jokainen lähdöt alkulukuja jopa n.,

ensimmäinen variantti käyttää label:

function showPrimes(n) { nextPrime: for (let i = 2; i < n; i++) { for (let j = 2; j < i; j++) { if (i % j == 0) continue nextPrime; } alert( i ); // a prime }}

toinen vaihtoehto käyttää ylimääräinen toiminto isPrime(n) testaa primality:

toinen vaihtoehto on helpompi ymmärtää, ei ole se? Koodikappaleen sijaan näemme toimen nimen (isPrime). Joskus ihmiset viittaavat sellaiseen koodiin kuin itsensä kuvaamiseen.

joten toimintoja voidaan luoda, vaikka emme aikoisikaan käyttää niitä uudelleen. Ne jäsentävät koodin ja tekevät siitä luettavan.,

Tiivistelmä

tehtävä ilmoitus näyttää tältä:

function name(parameters, delimited, by, comma) { /* code */}

  • Arvot välitetään funktion parametrit kopioidaan sen paikallisia muuttujia.
  • funktio voi päästä ulkoisiin muuttujiin. Mutta se toimii vain sisältä päin. Funktion ulkopuolella oleva koodi ei näe sen paikallisia muuttujia.
  • funktio voi palauttaa arvon. Jos ei, niin sen tulos on undefined.,

Jotta koodi on puhdas ja helppo ymmärtää, se on suositeltavaa käyttää lähinnä paikalliset muuttujat ja parametrit toiminto, ei ulompi muuttujia.

Se on aina helpompi ymmärtää toiminto, joka saa parametrit, toimii ne ja palauttaa tuloksen kuin toiminto, joka ei saa parametreja, mutta muuttaa ulompi muuttujia kuin haittavaikutus.

funktion nimi:

  • nimen tulee selkeästi kuvata, mitä funktio tekee. Kun näemme funktiokutsun koodissa, hyvä nimi antaa heti ymmärtää, mitä se tekee ja palauttaa.,
  • funktio on toiminta, joten funktioiden nimet ovat yleensä sanallisia.
  • On olemassa monia tunnettu toiminto etuliitteitä, kuten create…, show…, get…, check… ja niin edelleen. Käytä niitä vihjaamaan, mitä toiminto tekee.

funktiot ovat komentosarjojen päärakennuspalikoita. Nyt olemme käsitelleet perusasiat, joten voimme todella alkaa luoda ja käyttää niitä. Mutta se on vasta polun alku. Aiomme palata niihin monta kertaa, menee syvemmälle niiden kehittyneitä ominaisuuksia.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *