Sobes.tech
Middle

PHP ve JavaScript'teki kapanışlar arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Farklılık, nasıl oluşturulup kullanıldıklarında yatmaktadır:

  • PHP: Kapanışlar Closure sınıfının nesneleridir. function anahtar kelimesi kullanılarak (anonim fonksiyonlar için) oluşturulur ve use anahtar kelimesiyle üst kapsamdan değişkenler açıkça içe aktarılabilir. Değişkenler varsayılan olarak değerle içe aktarılır, referansla içe aktarmak için & kullanılabilir.
  • JavaScript: Kapanışlar, başka bir fonksiyon içinde fonksiyon tanımlarken doğal olarak oluşturulur. İçteki fonksiyon, dış fonksiyonun değişkenlerine ve kapsamına erişebilir. Değişkenler referansla (veya temel tipler ve kopyalar için değerle) yakalanır.

PHP'de kapanışlar use sözdizimi sayesinde daha açıktır, JavaScript'te ise bu mekanizma geliştirici için daha şeffaftır.

PHP'de örnek:

<?php
function outerFunction($x) {
    return function() use ($x) { // Açıkça içe aktarma
        echo $x;
    };
}

$closure = outerFunction("Merhaba");
$closure(); // Çıktı: Merhaba

JavaScript'te örnek:

function outerFunction(x) {
  return function() { // Dolaylı erişim
    console.log(x);
  };
}

const closure = outerFunction("Merhaba");
closure(); // Çıktı: Merhaba