Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


Definizioni delle funzioni JavaScript


Le funzioni JavaScript sono definite con la functionparola 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 functionparola 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 newparola 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' typeofoperatore 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.lengthproprietà 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 functionparola chiave, la returnparola 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 returnparola 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.