JavaScript-funktioner definieras med nyckelordet function
.
du kan använda en funktionsdeklaration eller ett funktionsuttryck.
funktionsdeklarationer
tidigare i denna handledning lärde du dig att funktioner deklareras med följande syntax:
/ / kod som ska köras
}
deklarerade funktioner utförs inte omedelbart. De ”sparas för senare användning” och kommer att utföras senare när de åberopas (uppmanas).
exempel
returnera a * b;
}
prova själv ”
semikolon används för att separera körbara JavaScript-uttalanden.
eftersom en funktionsdeklaration inte är ett körbart uttalande är det inte vanligt att avsluta det med ett semikolon.
funktionsuttryck
en JavaScript-funktion kan också definieras med ett uttryck.
ett funktionsuttryck kan lagras i en variabel:
exempel
prova själv ”
efter att ett funktionsuttryck har lagrats i en variabel kan variabeln användas som en funktion:
exempel
var z = x(4, 3);
prova själv ”
funktionen ovan är faktiskt en anonym funktion (en funktion utan namn).
funktioner som lagras i variabler behöver inte funktionsnamn. De anropas alltid (anropas) med variabelnamnet.
funktionen ovan slutar med ett semikolon eftersom det är en del av ett körbart uttalande.
Funktionskonstruktorn ()
som du har sett i tidigare exempel definieras JavaScript-funktioner med nyckelordet function
.
funktioner kan också definieras med en inbyggd JavaScript-funktionskonstruktor som heter Function()
.
exempel
var x = myFunction(4, 3);
prova själv ”
du behöver faktiskt inte använda funktionskonstruktören. Exemplet ovan är detsamma som att skriva:
exempel
var x = myFunction(4, 3);
prova själv ”
för det mesta kan du undvika att använda nyckelordet new
i JavaScript.
funktion hissa
tidigare i denna handledning lärde du dig om ”hissa” (JavaScript hissa).
hissning är JavaScript: s standardbeteende för att flytta deklarationer till toppen av det aktuella omfånget.
lyftning gäller variabla deklarationer och funktionsdeklarationer.
på grund av detta kan JavaScript-funktioner anropas innan de deklareras:
funktion minfunktion (y) {
returnera y * y;
}
funktioner som definieras med ett uttryck lyfts inte upp.
Självpåkallande funktioner
funktionsuttryck kan göras ”självpåkallande”.
ett självpåkallande uttryck anropas (startas) automatiskt utan att anropas.
funktionsuttryck körs automatiskt om uttrycket följs av ().
du kan inte själv åberopa en funktion deklaration.
du måste lägga till parenteser runt funktionen för att indikera att det är ett funktionsuttryck:
exempel
var x = ” Hej!!”; / / Jag kommer att åberopa mig själv
})();
prova själv ”
funktionen ovan är faktiskt en anonym självpåkallande funktion (funktion utan namn).
funktioner kan användas som värden
JavaScript-funktioner kan användas som värden:
exempel
returnera A * b;
}
var x = myFunction (4, 3);
prova själv ”
JavaScript-funktioner kan användas i uttryck:
exempel
returnera A * b;
}
var x = myFunction(4, 3) * 2;
prova själv ”
funktioner är objekt
operatören typeof
i JavaScript returnerar ”funktion” för funktioner.
men JavaScript-funktioner kan bäst beskrivas som objekt.
JavaScript-funktioner har både egenskaper och metoder.
egenskapen arguments.length
returnerar antalet argument som mottogs när funktionen anropades:
exempel
retur argument.längd;
}
prova själv ”
metoden toString()
returnerar funktionen som en sträng:
exempel
returnera A * b;
}
var txt = myFunction.toString ();
prova själv ”
en funktion som definieras som egenskapen hos ett objekt, kallas en metod för objektet.
en funktion som är utformad för att skapa nya objekt kallas en objektkonstruktör.
Pilfunktioner
Pilfunktioner tillåter en kort syntax för att skriva funktionsuttryck.
du behöver inte nyckelordet function
, nyckelordet return
och de lockiga parenteserna.
exempel
var x = funktion (x, y) {
returnera x * y;
}
// ES6
const x = (x, y) => x * y;
prova själv ”
Pilfunktioner har inte sina egna this
.De är inte väl lämpade för att definiera objektmetoder.
Pilfunktioner lyfts inte upp. De måste definieras innan de används.
att använda const
är säkrare än att använda var
, eftersom ett funktionsuttryck alltid är konstant värde.
du kan bara utelämna nyckelordet return
och lockiga parenteser Om funktionen är en enda sats. På grund av detta kan det vara en bra vana att alltid behålla dem:
exempel
prova själv ”
Pilfunktioner stöds inte i IE11 eller tidigare.