JavaScript Function Definition

JavaScript-funktioner defineres ved function nøgleorddefinere.

Du kan bruge funktionerklæringeller funktionUtryk

funktionserklæring

I dette kursus lærte du tidligere ved hjælp af følgende syntakserklæringFunktion:

function funktionsnavn(parametre) {
   Koden der skal udføres
}

De funktioner, der er deklarerede, udføres ikke direkte. De 'saves til senere brug' og vil blive udført senere, når de kaldes.

Example

function myFunction(a, b) {
     return a * b;
}

Try it yourself

Semicolons bruges til at adskille udførbare JavaScript-sætninger.

På grund af funktionenerklæringer ikke udførbare sætninger, og afsluttes sjældent med semicolon.

funktionsekspressioner

JavaScript-funktioner kan også brugeUtrykfor at definere.

Funktionsekspressioner kan gemmes i variabler:

Example

var x = function (a, b) {return a * b};

Try it yourself

Efter at have gemt funktionsekspressionen i en variabel, kan denne variabel bruges som en funktion:

Example

var x = function (a, b) {return a * b};
var z = x(4, 3);

Try it yourself

den ovennævnte funktion er faktisk enAnonym funktion(navnløse funktioner)。

Funktioner gemt i variabler har ikke brug for et navn. De bruges altid ved hjælp af variabelnavnet.

Den ovenstående funktion afsluttes med semicolon, fordi den er en del af en udførbare sætning.

Function() konstruktor

Som du så i tidligere eksempler, defineres JavaScript-funktioner ved function nøgleord defineret.

Funktioner kan også defineres ved hjælp af Function() de indbyggede JavaScript-funktionskonstruktører til at definere.

Example

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

Try it yourself

du faktisk ikke har brug for funktionskonstruktøren. Det er også okay at skrive det sådan:

Example

var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

Try it yourself

i de fleste tilfælde kan du undgå at bruge new nøgleord.

funktionshoisting

i denne trin-for-trin guide har du lært om "lifting" (hoisting) tidligere.

Hoisting er, hvordan JavaScripterklæringstandardbetingelse for at flytte til toppen af den nuværende kontekst.

Hoisting anvendes på variabeldeklarationer og funktionserklæringer.

på grund af dette kan JavaScript-funktioner kaldes før deres erklæring:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

funktioner defineret ved udtryk bliver ikke løftet.

selvkalderfunktion

funktionsekspressioner kan være "selvkalder".

selvkalderudtryk kaldes automatisk ( Starter ) uden at blive kaldt.

funktionsekspressioner udføres automatisk, hvis der følger ()

du kan ikke selvkalde en funktionserklæring.

du skal tilføje parenteser omkring funktionen for at indikere, at det er en funktionsekspression:

Example

(function () {
    var x = "Hello!!";      // Jeg vil kalde mig selv
}();

Try it yourself

den ovennævnte funktion er faktisk enanonyme selvkalderfunktioner(navnløse funktioner)。

funktioner kan bruges som værdier

JavaScript-funktioner kan bruges som værdier:

Example

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3);

Try it yourself

JavaScript-funktioner kan bruges i udtryk:

Example

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3) * 2;

Try it yourself

funktioner er objekter

i JavaScript typeof operatoren returnerer "function"。

men det er bedst at beskrive JavaScript-funktioner som objekter.

er JavaScript-funktioner alleegenskaberogmetoden

arguments.length vil returnere antallet af argumenter, der modtages, når funktionen kaldes:

Example

function myFunction(a, b) {
    return arguments.length;
}

Try it yourself

toString() metoden returnerer en streng som funktion:

Example

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

Try it yourself

Functions defined as object properties are called object methods.

Functions designed to create new objects are called object constructors (object constructors).

Arrow functions

Arrow functions allow the use of a concise syntax to write function expressions.

You do not need the function keyword, return keyword, and curly braces.

Example

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

Try it yourself

Arrow functions do not have their own this. They are not suitable for defining object methods.

Arrow functions are not hoisted. They must be defined before they are used.

Using const is safer than using var because function expressions are always constant values.

If the function is a single statement, then only the return keyword and curly braces can be omitted. Therefore, it may be a good habit to keep them:

Example

const x = (x, y) => { return x * y };

Try it yourself

IE11 or earlier versions do not support arrow functions.