JavaScript-functies worden gedefinieerd met het function
sleutelwoord.
u kunt een functiedeclaratie of een functieuitdrukking gebruiken.
functie declaraties
eerder in deze tutorial heb je geleerd dat functies gedeclareerd worden met de volgende syntaxis:
/ / uit te voeren code
}
gedeclareerde functies worden niet onmiddellijk uitgevoerd. Ze worden “opgeslagen voor later gebruik”, en zullen later worden uitgevoerd, wanneer ze worden aangeroepen (opgeroepen).
voorbeeld
geef a * b Terug;
}
probeer het zelf “
puntkomma ‘ s worden gebruikt om uitvoerbare Javascript-statements te scheiden.
omdat een functiedeclaratie geen uitvoerbaar statement is, is het niet gebruikelijk om het te beëindigen met een puntkomma.
functie-expressies
een JavaScript-functie kan ook worden gedefinieerd met behulp van een expressie.
een functie-expressie kan worden opgeslagen in een variabele:
voorbeeld
probeer het zelf “
nadat een functie-expressie is opgeslagen in een variabele, kan de variabele worden gebruikt als een functie:
voorbeeld
var z = x (4, 3);
probeer het zelf ”
de bovenstaande functie is eigenlijk een anonieme functie (een functie zonder naam).
In variabelen opgeslagen functies hebben geen functienamen nodig. Ze worden altijd aangeroepen (aangeroepen) met behulp van de variabele naam.
de functie hierboven eindigt met een puntkomma omdat het een deel is van een uitvoerbaar statement.
de Function () Constructor
zoals u in de vorige voorbeelden hebt gezien, worden JavaScript-functies gedefinieerd met het function
sleutelwoord.
functies kunnen ook worden gedefinieerd met een ingebouwde JavaScript-functieconstructor genaamd Function()
.
voorbeeld
var x = myFunction (4, 3);
probeer het zelf ”
u hoeft de Function constructor eigenlijk niet te gebruiken. Het voorbeeld hierboven is hetzelfde als schrijven:
voorbeeld
var x = myFunction (4, 3);
probeer het zelf ”
meestal kunt u het gebruik van het new
sleutelwoord in JavaScript vermijden.
functie hijsen
eerder in deze tutorial, leerde u over “hijsen” (Javascript hijsen).
hijsen is JavaScript ‘ s standaard gedrag van het verplaatsen van declaraties naar de top van de huidige scope.
hijsen is van toepassing op variabele aangiften en op functionele aangiften.
hierdoor kunnen JavaScript-functies worden aangeroepen voordat ze worden gedeclareerd:
functie mijnfunctie (y) {
geef y * y terug;
}
functies gedefinieerd met behulp van een expressie worden niet gehesen.
Zelfaanroepende functies
functie-expressies kunnen “zelfaanroepend”worden gemaakt.
een zelfaanroepende expressie wordt automatisch aangeroepen (gestart), zonder aangeroepen te worden.
functie-expressies worden automatisch uitgevoerd als de expressie wordt gevolgd door ().
u kunt een functiedeclaratie niet zelf aanroepen.
u moet haakjes toevoegen rond de functie om aan te geven dat het een functie-expressie is:
voorbeeld
var x = ” Hallo!!”; / / I will call myself
})();
probeer het zelf ”
de bovenstaande functie is eigenlijk een anonieme zelfaanroepende functie (functie zonder naam).
functies kunnen worden gebruikt als waarden
JavaScript-functies kunnen worden gebruikt als waarden:
voorbeeld
geef a * b;
}
var x = mijnfunctie (4, 3);
probeer het zelf ”
JavaScript-functies kunnen worden gebruikt in expressies:
voorbeeld
geef a * b;
}
var x = mijnfunctie(4, 3) * 2;
“
functies zijn objecten
de typeof
operator in JavaScript geeft “functie” voor functies terug.
maar JavaScript-functies kunnen het best worden omschreven als objecten.
JavaScript-functies hebben zowel eigenschappen als methoden.
de eigenschap arguments.length
geeft het aantal ontvangen argumenten terug toen de functie werd aangeroepen:
voorbeeld
return argumenten.length;
}
probeer het zelf ”
de methode toString()
geeft de functie terug als een tekenreeks:
voorbeeld
retourneer a * b;
}
var txt = myFunction.toString ();
probeer het zelf ”
een functie gedefinieerd als de eigenschap van een object, wordt een methode voor het object genoemd.
een functie die ontworpen is om nieuwe objecten te maken, wordt een objectconstructor genoemd.
Pijlfuncties
Pijlfuncties maken een korte syntaxis mogelijk voor het schrijven van functie-expressies.
u hebt het function
sleutelwoord, het return
sleutelwoord en de accolades niet nodig.
voorbeeld
var x = function (x, y) {
return x * y;
}
// ES6
const x = (x, y) = > x * y;
probeer het zelf ”
Pijlfuncties hebben hun eigen this
niet.Ze zijn niet goed geschikt voor het definiëren van objectmethoden.
Pijlfuncties worden niet gehesen. Ze moeten worden gedefinieerd voordat ze worden gebruikt.
het gebruik van const
is veiliger dan het gebruik van var
, omdat een functie-expressie altijd een constante waarde is.
u kunt het sleutelwoord return
en de accolades alleen weglaten als de functie één statement is. Hierdoor is het misschien een goede gewoonte om ze altijd te houden:
voorbeeld
probeer het zelf ”
Arrow-functies worden niet ondersteund in IE11 of eerder.