Definizioni delle funzioni JavaScript
Le funzioni JavaScript sono definite con la
function
parola chiave.
È possibile utilizzare una dichiarazione di funzione o un'espressione di funzione .
Dichiarazioni di funzione
In precedenza in questo tutorial, hai appreso che le funzioni sono dichiarate con la seguente sintassi:
function functionName(parameters) {
// code to be executed
}
Le funzioni dichiarate non vengono eseguite immediatamente. Sono "salvati per un uso successivo" e verranno eseguiti in seguito, quando vengono invocati (chiamati).
Esempio
function myFunction(a, b) {
return a * b;
}
I punti e virgola vengono utilizzati per separare le istruzioni JavaScript eseguibili.
Poiché una dichiarazione di funzione non è un'istruzione eseguibile, non è comune terminarla con un punto e virgola.
Espressioni di funzione
Una funzione JavaScript può anche essere definita utilizzando un'espressione .
Un'espressione di funzione può essere memorizzata in una variabile:
Esempio
const x = function (a, b) {return a * b};
Dopo che un'espressione di funzione è stata memorizzata in una variabile, la variabile può essere utilizzata come una funzione:
Esempio
const x = function (a, b) {return a * b};
let z = x(4, 3);
La funzione sopra è in realtà una funzione anonima (una funzione senza nome).
Le funzioni memorizzate nelle variabili non necessitano di nomi di funzioni. Vengono sempre richiamati (chiamati) utilizzando il nome della variabile.
La funzione sopra termina con un punto e virgola perché fa parte di un'istruzione eseguibile.
Il costruttore Function()
Come hai visto negli esempi precedenti, le funzioni JavaScript sono definite con la function
parola chiave.
Le funzioni possono anche essere definite con un costruttore di funzioni JavaScript integrato chiamato
Function()
.
Esempio
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
In realtà non è necessario utilizzare il costruttore di funzioni. L'esempio sopra è lo stesso di scrivere:
Esempio
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
Il più delle volte, puoi evitare di utilizzare la new
parola chiave in JavaScript.
Funzione di sollevamento
In precedenza, in questo tutorial, hai imparato a conoscere il "sollevamento" ( JavaScript Hoisting ).
Il sollevamento è il comportamento predefinito di JavaScript per spostare le dichiarazioni all'inizio dell'ambito corrente.
Il sollevamento si applica alle dichiarazioni di variabili e alle dichiarazioni di funzioni.
Per questo motivo, le funzioni JavaScript possono essere chiamate prima di essere dichiarate:
myFunction(5);
function myFunction(y) {
return y * y;
}
Le funzioni definite utilizzando un'espressione non vengono sollevate.
Funzioni di auto-invocazione
Le espressioni di funzione possono essere "autoinvocate".
Un'espressione che si richiama automaticamente viene invocata (avviata) automaticamente, senza essere chiamata.
Le espressioni di funzione verranno eseguite automaticamente se l'espressione è seguita da ().
Non è possibile richiamare automaticamente una dichiarazione di funzione.
Devi aggiungere parentesi attorno alla funzione per indicare che si tratta di un'espressione di funzione:
Esempio
(function () {
let x = "Hello!!"; // I will invoke myself
})();
La funzione sopra è in realtà una funzione di auto-invocazione anonima (funzione senza nome).
Le funzioni possono essere utilizzate come valori
Le funzioni JavaScript possono essere utilizzate come valori:
Esempio
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
Le funzioni JavaScript possono essere utilizzate nelle espressioni:
Esempio
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
Le funzioni sono oggetti
L' typeof
operatore in JavaScript restituisce "funzione" per le funzioni.
Tuttavia, le funzioni JavaScript possono essere meglio descritte come oggetti.
Le funzioni JavaScript hanno sia proprietà che metodi .
La arguments.length
proprietà restituisce il numero di argomenti ricevuti quando è stata richiamata la funzione:
Esempio
function myFunction(a, b) {
return arguments.length;
}
Il toString()
metodo restituisce la funzione come stringa:
Esempio
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Una funzione definita come proprietà di un oggetto, viene chiamata metodo per l'oggetto.
Una funzione progettata per creare nuovi oggetti, è chiamata costruttore di oggetti.
Funzioni delle frecce
Le funzioni delle frecce consentono una breve sintassi per la scrittura di espressioni di funzione.
Non sono necessarie la function
parola chiave, la return
parola chiave e le
parentesi graffe .
Esempio
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Le funzioni delle frecce non hanno le proprie this
. Non sono adatti per definire metodi oggetto .
Le funzioni delle frecce non sono sollevate. Devono essere definiti prima di essere utilizzati.
L'utilizzo const
è più sicuro dell'utilizzo var
, poiché un'espressione di funzione è sempre un valore costante.
Puoi omettere la return
parola chiave e le parentesi graffe solo se la funzione è una singola istruzione. Per questo motivo, potrebbe essere una buona abitudine tenerli sempre:
Esempio
const x = (x, y) => { return x * y };
Le funzioni delle frecce non sono supportate in IE11 o versioni precedenti.