JavaKomentosarjan funktioiden määrittäminen ja kutsuminen esimerkin avulla
⚡ Älykäs yhteenveto
JavaSkriptifunktiot ryhmittelevät uudelleenkäytettäviä koodilohkoja, jotka suoritetaan vain kutsuttaessa. Tämä ohje näyttää, miten sellainen deklaroidaan, miten siihen välitetään argumentteja ja miten arvo palautetaan kutsujalle.
Mitä toiminto sisältää JavaKäsikirjoitus?
Funktiot ovat erittäin tärkeitä ja hyödyllisiä millä tahansa ohjelmointikielellä, koska ne tekevät koodista uudelleenkäytettävän. Funktio on koodilohko, joka suoritetaan vain, jos sitä kutsutaan. Jos sinulla on muutama koodirivi, joita on käytettävä useita kertoja, voit luoda funktion, joka sisältää toistuvat koodirivit, ja kutsua funktiota sitten missä tahansa.
Mikään aaltosulkeiden sisällä oleva koodi ei toimi yksinään. Selain tallentaa lohkon sille antamallasi nimellä, ja koodi suoritetaan vain, kun nimi kirjoitetaan sulkeiden kanssa, kuten myFunction()Toiminnot ovat siis kaiken keskiössä. JavaKäsikirjoitus ohjelma, onko skripti elossa sivun sisällä tai ulkoisessa tiedostossa.
Kuinka luoda funktio sisään JavaKäsikirjoitus
- Käytä avainsanaa toiminto perässä funktion nimi.
- Avaa ja sulje sulut funktion nimen jälkeen.
- Sulujen jälkeen avaa ja sulje kiharat olkaimet.
- Kirjoita koodirivit aaltosulkeisiin.
Syntaksi:
function functionname()
{
lines of code to be executed
}
Alla oleva esimerkki määrittelee myFunction() ja kutsuu sitä sitten heti seuraavalla rivillä, joten viesti tulee näkyviin heti sivun latauduttua. Kokeile tätä itse:
<html>
<head>
<title>Functions!!!</title>
<script type="text/javascript">
function myFunction()
{
document.write("This is a simple function.<br />");
}
myFunction();
</script>
</head>
<body>
</body>
</html>
Toiminto argumenttien kanssa
Voit luoda funktioita myös argumenteilla. Argumentit tulee määrittää sulkeissa.
Syntaksi:
function functionname(arg1, arg2)
{
lines of code to be executed
}
Tässä countVowels() vastaanottaa minkä tahansa nimen, jonka vierailija kirjoittaa kehotteeseen, käy läpi jokaisen merkin ja raportoi, kuinka monta vokaalia nimi sisältää. Kokeile tätä itse:
<html>
<head>
<script type="text/javascript">
var count = 0;
function countVowels(name)
{
for (var i=0;i<name.length;i++)
{
if(name[i] == "a" || name[i] == "e" || name[i] == "i" || name[i] == "o" || name[i] == "u")
count = count + 1;
}
document.write("Hello " + name + "!!! Your name has " + count + " vowels.");
}
var myName = prompt("Please enter your name");
countVowels(myName);
</script>
</head>
<body>
</body>
</html>
JavaSkriptin palautusarvo
Voit myös luoda arvoja palauttavia JS-funktioita. Toiminnon sisällä sinun on käytettävä avainsanaa palata sen jälkeen palautettava arvo.
Syntaksi:
function functionname(arg1, arg2) { lines of code to be executed return val1; }
Tässä viimeisessä esimerkissä returnSum() palauttaa summan riville, jolla se kutsuttiin, joten tulos voidaan liittää lauseeseen sen sijaan, että se tulostettaisiin funktion sisällä. Kokeile tätä itse:
<html>
<head>
<script type="text/javascript">
function returnSum(first, second)
{
var sum = first + second;
return sum;
}
var firstNo = 78;
var secondNo = 22;
document.write(firstNo + " + " + secondNo + " = " + returnSum(firstNo,secondNo));
</script>
</head>
<body>
</body>
</html>
Funktiotyypit JavaKäsikirjoitus
Yllä olevat kolme esimerkkiä käyttävät kaikki klassista funktion määrittelyä, mutta silti modernia JavaScript tarjoaa useita muita muotoja. Ne eroavat toisistaan pääasiassa siinä, nostaako moottori ne ja miten kukin niistä käsittelee this avainsana.
| Funktion tyyppi | Tyypillinen syntaksi | Kun sitä käytetään |
|---|---|---|
| Toimintoilmoitus | funktio tervehdys() { } | Nimetty, uudelleenkäytettävä logiikka; nostettu laajimmalle mahdolliselle tasolle |
| Funktion lauseke | vakio tervehdys = funktio () { }; | Funktion tallentaminen muuttujaan; ei nostettuun tilaan |
| Nuolifunktio (ES6) | vakio tervehdys = () => { }; | Lyhyet takaisinkutsutoiminnot; perii tämän ympäröivästä laajuusalueesta |
| Anonyymi funktio | setTimeout(funktio () { }, 100); | Kertaluonteinen logiikka siirrettiin suoraan toiseen funktioon |
| IIFE | (funktio () { })(); | Suoritetaan välittömästi ja pidetään muuttujat yksityisinä |
| Takaisinsoitto | items.forEach(näytäKohde); | Funktio, joka on annettu toiselle funktiolle ja jota kutsutaan myöhemmin |
Huomautus yllä olevista esimerkeistä: historialliset näytteet käyttävät var ja document.write(), ja molemmat toimivat edelleen jokaisessa selaimessa. Nykykäytäntönä muuttujien määrittelyssä käytetään let or const ja tulostaa tulosteen kautta console.log() tai asettamalla textContent elementin kohdalla, koska document.write() pyyhkii sivun, joka on jo latautunut. type="text/javascript" Attribuutti on myös valinnainen HTML5:ssä.
Funktioparametrit, argumentit ja oletusarvot
Parametrit ovat määritelmässä lueteltuja paikkamerkkien nimiä, kun taas argumentit ovat funktion kutsumisen yhteydessä annettuja reaaliarvoja. countVowels(name) edellä, name on parametri ja kehotteeseen kirjoitettu teksti on argumentti.
function greet(user, greeting = "Hello") { return greeting + ", " + user; } greet("Ann"); greet("Ann", "Welcome");
- Parametri, jolla ei ole vastaavaa argumenttia, muuttuu
undefinedellei oletusarvoa anneta, kutengreetingon täällä. - Parametriluettelo jättää ylimääräiset argumentit huomiotta, mutta ne pysyvät saatavilla funktion kautta.
argumentsobjekti minkä tahansa muun kuin nuolifunktion sisällä. - Lepoparametri kirjoitettuna muodossa
...valueskerää kaikki jäljellä olevat argumentit aidoksi ryhmä.
Toiminnan laajuus ja nosto JavaKäsikirjoitus
Funktion kirjoituspaikka määrää, mitä se voi nähdä ja milloin sitä voidaan kutsua. Kaksi sääntöä selittää lähes kaikki aloittelijoiden kohtaamat yllätykset.
- Nosto: Funktiomäärittelyt siirretään laajuusalueensa alkuun ennen skriptin suorittamista, joten niitä voidaan kutsua määritelmän yläpuolella olevalla rivillä. Funktiolausekkeita ja nuolifunktioita ei nosteta ja ne heittävät virheen, jos niitä kutsutaan aikaisin.
- Soveltamisala: muuttujat, jotka on ilmoitettu
varfunktion sisällä ovat näkyvissä koko funktiossa, kun taasletjaconstrajoittuvat siihen lohkoon, jossa ne sijaitsevat. Kaikki funktioiden ulkopuolella ilmoitetut arvot ovat globaaleja.
Vokaalilaskuri osoittaa tämän käytännössä. Sen count muuttuja deklaroidaan funktion ulkopuolella, joten kutsuminen countVowels() Toisella kerralla samalla sivulla jatketaan yhteenlaskua aiempaan kokonaissummaan sen sijaan, että se aloittaisi uudelleen nollasta. Määrittelyn siirtäminen funktion sisällä nollaisi sen jokaisella kutsukerralla.
Nämä scoping säännöt siirtyvät myös palvelinpuolen koodiin, minkä vuoksi sama perustelu pätee, kun funktioita kirjoitetaan Node.jsja miksi funktion käyttäytyminen esiintyy niin usein JavaKäsikirjoitushaastattelukysymykset.
