Middle
Jaký je rozdíl mezi uzávěry v PHP a JavaScript?
sobes.tech AI
Odpověď od AI
Hlavní rozdíl spočívá v tom, jak jsou vytvářeny a používány:
- PHP: Uzávěry jsou objekty třídy
Closure. Jsou vytvářeny pomocí klíčového slovafunction(pro anonymní funkce) a mohou explicitně importovat proměnné z nadřazeného rozsahu pomocí klíčového slovause. Proměnné jsou importovány výchozí hodnotou, ale lze použít&pro import odkazem. - JavaScript: Uzávěry jsou přirozeně vytvářeny při definování funkce uvnitř jiné funkce. Vnořená funkce má přístup k proměnným vnější funkce a jejímu rozsahu. Proměnné jsou zachyceny odkazem (nebo hodnotou u primitivních typů a kopie).
V PHP jsou uzávěry explicitnější díky syntaxi use, zatímco v JavaScriptu je tento mechanismus pro vývojáře transparentnější.
Příklad v PHP:
<?php
function outerFunction($x) {
return function() use ($x) { // Explicitní import
echo $x;
};
}
$closure = outerFunction("Ahoj");
$closure(); // Výstup: Ahoj
Příklad v JavaScriptu:
function outerFunction(x) {
return function() { // Implicitní přístup
console.log(x);
};
}
const closure = outerFunction("Ahoj");
closure(); // Výstup: Ahoj