Middle
Aký je rozdiel medzi uzávermi v PHP a JavaScript?
sobes.tech AI
Odpoveď od AI
Kľúčový rozdiel spočíva v spôsobe, akým sú vytvárané a používané:
- PHP: Uzávierky sú objekty triedy
Closure. Sú vytvárané pomocou kľúčového slovafunction(pre anonymné funkcie) a môžu explicitne importovať premenné z nadradeného rozsahu pomocou kľúčového slovause. Premenné sa štandardne importujú hodnotou, ale je možné použiť&na importovanie odkazom. - JavaScript: Uzávierky sú prirodzene vytvárané pri definovaní funkcie vo vnútri inej funkcie. Vnorená funkcia má prístup k premenným vonkajšej funkcie a jej rozsahu. Premenné sú zachytávané odkazom (alebo hodnotou pri primitívnych typoch a kópiách).
V PHP sú uzávierky jasnejšie vďaka syntaxe use, zatiaľ čo v JavaScript je tento mechanizmus pre vývojára transparentnejší.
Príklad v PHP:
<?php
function outerFunction($x) {
return function() use ($x) { // Explicitný import
echo $x;
};
}
$closure = outerFunction("Ahoj");
$closure(); // Výstup: Ahoj
Príklad v JavaScript:
function outerFunction(x) {
return function() { // Implicitný prístup
console.log(x);
};
}
const closure = outerFunction("Ahoj");
closure(); // Výstup: Ahoj