Definice funkcí JavaScriptu
Funkce JavaScriptu jsou definovány pomocí
function
klíčového slova.
Můžete použít deklaraci funkce nebo výraz funkce .
Prohlášení o funkci
Dříve v tomto kurzu jste se dozvěděli, že funkce jsou deklarovány s následující syntaxí:
function functionName(parameters) {
// code to be executed
}
Deklarované funkce se neprovedou okamžitě. Jsou "uloženy pro pozdější použití" a budou provedeny později, když jsou vyvolány (vyvolány).
Příklad
function myFunction(a, b) {
return a * b;
}
Středníky se používají k oddělení spustitelných příkazů JavaScriptu.
Vzhledem k tomu, že deklarace funkce není spustitelný příkaz, není obvyklé ji končit středníkem.
Funkční výrazy
Funkci JavaScript lze také definovat pomocí výrazu .
Výraz funkce lze uložit do proměnné:
Příklad
const x = function (a, b) {return a * b};
Poté, co byl výraz funkce uložen do proměnné, lze proměnnou použít jako funkci:
Příklad
const x = function (a, b) {return a * b};
let z = x(4, 3);
Výše uvedená funkce je ve skutečnosti anonymní funkce (funkce bez názvu).
Funkce uložené v proměnných nepotřebují názvy funkcí. Jsou vždy vyvolány (volány) pomocí názvu proměnné.
Výše uvedená funkce končí středníkem, protože je součástí spustitelného příkazu.
Konstruktor Function().
Jak jste viděli v předchozích příkladech, funkce JavaScriptu jsou definovány pomocí function
klíčového slova.
Funkce lze také definovat pomocí vestavěného konstruktoru funkcí JavaScriptu s názvem
Function()
.
Příklad
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
Ve skutečnosti nemusíte používat konstruktor funkcí. Výše uvedený příklad je stejný jako při psaní:
Příklad
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
Většinu času se můžete vyhnout použití new
klíčového slova v JavaScriptu.
Funkce zdvihání
Dříve v tomto tutoriálu jste se dozvěděli o "zvedání" ( JavaScript Hoisting ).
Zvednutí je výchozí chování JavaScriptu při přesouvání deklarací na začátek aktuálního rozsahu.
Zvednutí se týká deklarací proměnných a deklarací funkcí.
Z tohoto důvodu lze funkce JavaScriptu volat dříve, než jsou deklarovány:
myFunction(5);
function myFunction(y) {
return y * y;
}
Funkce definované pomocí výrazu nejsou zvednuty.
Samovolné funkce
Funkční výrazy lze provést „samovolně“.
Samovolný výraz je vyvolán (spuštěn) automaticky, aniž by byl volán.
Výrazy funkce se spustí automaticky, pokud za výrazem následuje ().
Nemůžete sami vyvolat deklaraci funkce.
Musíte přidat závorky kolem funkce, abyste označili, že se jedná o výraz funkce:
Příklad
(function () {
let x = "Hello!!"; // I will invoke myself
})();
Výše uvedená funkce je ve skutečnosti anonymní samovolná funkce (funkce bez názvu).
Funkce mohou být použity jako hodnoty
Funkce JavaScriptu lze použít jako hodnoty:
Příklad
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
Funkce JavaScriptu lze použít ve výrazech:
Příklad
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
Funkce jsou objekty
Operátor typeof
v JavaScriptu vrací funkci „funkce“.
Funkce JavaScriptu však lze nejlépe popsat jako objekty.
Funkce JavaScriptu mají vlastnosti i metody .
Vlastnost arguments.length
vrací počet argumentů přijatých při vyvolání funkce:
Příklad
function myFunction(a, b) {
return arguments.length;
}
Metoda toString()
vrací funkci jako řetězec:
Příklad
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Funkce definovaná jako vlastnost objektu se nazývá metoda objektu.
Funkce navržená k vytváření nových objektů se nazývá konstruktor objektů.
Funkce šipek
Šipkové funkce umožňují krátkou syntaxi pro zápis funkčních výrazů.
Nepotřebujete function
klíčové slovo, return
klíčové slovo a
složené závorky .
Příklad
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Funkce šipek nemají vlastní this
. Nejsou příliš vhodné pro definování objektových metod .
Funkce šipek nejsou zvednuté. Musí být definovány před jejich použitím.
Použití const
je bezpečnější než použití var
, protože výraz funkce má vždy konstantní hodnotu.
Klíčové slovo a složené závorky můžete vynechat pouze v return
případě, že je funkce jedním příkazem. Z tohoto důvodu může být dobrým zvykem je vždy uchovávat:
Příklad
const x = (x, y) => { return x * y };
Funkce šipek nejsou podporovány v IE11 nebo dřívějších verzích.