Samouczek JS

JS DOM Wprowadzenie do JS JS Dokąd Wyjście JS Oświadczenia JS Składnia JS Komentarze JS Zmienne JS JS Let JS Const Operatorzy JS Arytmetyka JS Zadanie JS Typy danych JS Funkcje JS Obiekty JS Wydarzenia JS JS Strings Metody ciągów JS Wyszukiwanie ciągów JS Szablony JS String Numery JS Metody liczbowe JS Tablice JS Metody tablic JS Sortowanie tablic JS Iteracja tablicy JS JS Array Const JS Daty Formaty daty JS JS Data Pobierz metody Metody ustawiania daty JS Matematyka JS JS losowo JS Booleans Porównania JS Warunki JS Przełącznik JS Pętla JS dla Pętla JS dla In Pętla JS dla Of Pętla JS, podczas gdy Przerwa JS Iterable JS Zestawy JS Mapy JS Typ JS Konwersja typu JS JS Bitwise JS RegExp Błędy JS Zakres JS JS Podnoszenie Tryb ścisły JS JS to słowo kluczowe Funkcja strzałki JS Klasy JS JS JSON Debugowanie JS Przewodnik po stylu JS Najlepsze praktyki JS Błędy JS Wydajność JS JS słowa zastrzeżone

Wersje JS

Wersje JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Krawędź Historia JS

Obiekty JS

Definicje obiektów Właściwości obiektu Metody obiektowe Wyświetlanie obiektów Akcesoria do obiektów Konstruktorzy obiektów Prototypy obiektów Iterowalne obiekty Zestawy obiektów Mapy obiektów Odniesienie do obiektu

Funkcje JS

Definicje funkcji Parametry funkcji Wywołanie funkcji Wywołanie funkcji Funkcja Zastosuj Zamknięcia funkcji

Klasy JS

Wprowadzenie do zajęć Dziedziczenie klas Klasa statyczna

JS Async

Oddzwaniania JS Asynchroniczny JS JS Obietnice JS Async/Oczekiwanie

JS HTML DOM

Wprowadzenie do DOM Metody DOM Dokument DOM Elementy DOM DOM HTML Formularze DOM DOM CSS Animacje DOM Wydarzenia DOM Odbiornik zdarzeń DOM Nawigacja DOM Węzły DOM Kolekcje DOM Listy węzłów DOM

Zestawienie komponentów przeglądarki JS

Okno JS Ekran JS Lokalizacja JS Historia JS JS Navigator Wyskakujący alert JS Czas JS Pliki cookie JS

JS Web API

Wprowadzenie do internetowego interfejsu API Interfejs API formularzy internetowych Interfejs API historii online API przechowywania danych w sieci Web Web Worker API Internetowy interfejs API pobierania Internetowy interfejs API geolokalizacji

JS AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

JS JSON

Wprowadzenie do JSON Składnia JSON JSON a XML Typy danych JSON Analiza JSON JSON Obiekty JSON Tablice JSON Serwer JSON JSON PHP JSON HTML JSON JSONP

JS kontra jQuery

Selektory jQuery jQuery HTML jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS płótno JS Działka JS Chart.js Wykres JS Google JS D3.js

Przykłady JS

Przykłady JS JS HTML DOM Wejście JS HTML Obiekty HTML JS Wydarzenia JS HTML Przeglądarka JS Edytor JS Ćwiczenia JS JS Quiz Certyfikat JS

Referencje JS

Obiekty JavaScript Obiekty HTML DOM


Definicje funkcji JavaScript


Funkcje JavaScript są definiowane za pomocą functionsłowa kluczowego.

Możesz użyć deklaracji funkcji lub wyrażenia funkcji .


Deklaracje funkcji

Wcześniej w tym samouczku dowiedziałeś się, że funkcje są deklarowane z następującą składnią:

function functionName(parameters) {
  // code to be executed
}

Zadeklarowane funkcje nie są wykonywane natychmiast. Są „zapisywane do późniejszego użycia” i zostaną wykonane później, gdy zostaną wywołane (wywołane).

Przykład

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

Średniki służą do oddzielania wykonywalnych instrukcji JavaScript.
Ponieważ deklaracja funkcji nie jest instrukcją wykonywalną, często kończy się ją średnikiem.


Wyrażenia funkcyjne

Funkcję JavaScript można również zdefiniować za pomocą wyrażenia .

Wyrażenie funkcyjne może być przechowywane w zmiennej:

Przykład

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

Po zapisaniu wyrażenia funkcyjnego w zmiennej, zmienna może być używana jako funkcja:

Przykład

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

Powyższa funkcja jest w rzeczywistości funkcją anonimową (funkcją bez nazwy).

Funkcje przechowywane w zmiennych nie potrzebują nazw funkcji. Są one zawsze wywoływane (wywoływane) przy użyciu nazwy zmiennej.

Powyższa funkcja kończy się średnikiem, ponieważ jest częścią instrukcji wykonywalnej.



Konstruktor Function()

Jak widzieliście w poprzednich przykładach, funkcje JavaScript są definiowane za pomocą functionsłowa kluczowego.

Funkcje można również definiować za pomocą wbudowanego konstruktora funkcji JavaScript o nazwie Function().

Przykład

const myFunction = new Function("a", "b", "return a * b");

let x = myFunction(4, 3);

W rzeczywistości nie musisz używać konstruktora funkcji. Powyższy przykład jest taki sam jak pisanie:

Przykład

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

let x = myFunction(4, 3);

W większości przypadków możesz uniknąć używania newsłowa kluczowego w JavaScript.


Podnoszenie funkcji

Wcześniej w tym samouczku poznałeś „podnoszenie” ( JavaScript Hoisting ).

Podnoszenie jest domyślnym zachowaniem JavaScript polegającym na przenoszeniu deklaracji na górę bieżącego zakresu.

Podnoszenie dotyczy deklaracji zmiennych i deklaracji funkcji.

Z tego powodu funkcje JavaScript mogą być wywoływane przed ich zadeklarowaniem:

myFunction(5);

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

Funkcje zdefiniowane za pomocą wyrażenia nie są przenoszone.


Funkcje samopowtarzalne

Wyrażenia funkcji mogą być „samo-wywołujące”.

Wyrażenie samopowtarzalne jest wywoływane (uruchamiane) automatycznie, bez wywoływania.

Wyrażenia funkcji zostaną wykonane automatycznie, jeśli po wyrażeniu nastąpi ().

Nie można samodzielnie wywołać deklaracji funkcji.

Musisz dodać nawiasy wokół funkcji, aby wskazać, że jest to wyrażenie funkcji:

Przykład

(function () {
  let x = "Hello!!";  // I will invoke myself
})();

Powyższa funkcja jest w rzeczywistości anonimową funkcją samowywołującą się (funkcja bez nazwy).


Funkcje mogą być używane jako wartości

Funkcje JavaScript mogą być używane jako wartości:

Przykład

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

let x = myFunction(4, 3);

Funkcje JavaScript mogą być używane w wyrażeniach:

Przykład

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

let x = myFunction(4, 3) * 2;

Funkcje są obiektami

Operator typeofw JavaScript zwraca "funkcję" dla funkcji.

Jednak funkcje JavaScript najlepiej można opisać jako obiekty.

Funkcje JavaScript mają zarówno właściwości , jak i metody .

Właściwość arguments.lengthzwraca liczbę argumentów otrzymanych przy wywołaniu funkcji:

Przykład

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

Metoda toString()zwraca funkcję jako ciąg znaków:

Przykład

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

let text = myFunction.toString();

Funkcja zdefiniowana jako właściwość obiektu nazywana jest metodą obiektu.
Funkcja przeznaczona do tworzenia nowych obiektów nazywana jest konstruktorem obiektów.


Funkcje strzałek

Funkcje strzałek umożliwiają krótką składnię do pisania wyrażeń funkcyjnych.

Nie potrzebujesz functionsłowa kluczowego, returnsłowa kluczowego i nawiasów klamrowych .

Przykład

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

// ES6
const x = (x, y) => x * y;

Funkcje strzałek nie mają własnych this. Nie nadają się do definiowania metod obiektowych .

Funkcje strzałek nie są podnoszone. Muszą być zdefiniowane przed użyciem.

Używanie const jest bezpieczniejsze niż używanie var, ponieważ wyrażenie funkcji ma zawsze stałą wartość.

returnSłowo kluczowe i nawiasy klamrowe można pominąć tylko wtedy, gdy funkcja jest pojedynczą instrukcją. Z tego powodu dobrym nawykiem może być trzymanie ich zawsze:

Przykład

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

Funkcje strzałek nie są obsługiwane w IE11 i wcześniejszych.