Sobes.tech
Middle

Wat is het verschil tussen closures in PHP en JavaScript?

sobes.tech AI

Antwoord van AI

De belangrijkste verschillen liggen in hoe ze worden gemaakt en gebruikt:

  • PHP: Closures zijn objecten van de klasse Closure. Ze worden gemaakt met het sleutelwoord function (voor anonieme functies) en kunnen expliciet variabelen uit de bovenliggende scope importeren met het sleutelwoord use. Variabelen worden standaard per waarde geïmporteerd, maar & kan worden gebruikt voor import per referentie.
  • JavaScript: Closures worden op natuurlijke wijze gemaakt bij het definiëren van een functie binnen een andere functie. De geneste functie heeft toegang tot de variabelen van de externe functie en haar scope. Variabelen worden vastgelegd per referentie (of per waarde bij primitieve types en kopieën).

In PHP zijn closures explicieter dankzij de syntax use, terwijl dit mechanisme in JavaScript transparanter is voor de ontwikkelaar.

Voorbeeld in PHP:

<?php
function outerFunction($x) {
    return function() use ($x) { // Expliciete import van $x
        echo $x;
    };
}

$closure = outerFunction("Hallo");
$closure(); // Uitvoer: Hallo

Voorbeeld in JavaScript:

function outerFunction(x) {
  return function() { // Impliciete toegang tot x
    console.log(x);
  };
}

const closure = outerFunction("Hallo");
closure(); // Uitvoer: Hallo