JavaScript'teki kapanışlar

Mar 07 2023
JavaScript'te işlev, belirli bir görevi gerçekleştirmek için tasarlanmış bir kod bloğudur. Çağırdığınızda çalışır.
JavaScript'teki kapanışlar

JavaScript'te işlev, belirli bir görevi gerçekleştirmek için tasarlanmış bir kod bloğudur. Çağırdığınızda çalışır.

Örneğin:

function myFunction(message){
  console.log(message)
}

myFunction("Hello there!!")

myFunction("Welcome, boss")

Ama ya ilk infazda ya da bir önceki infazda ne olduğunu bilmek istiyorsak? Kapanışların geldiği yer burasıdır.

Kapatmalar nedir?

Basit bir ifadeyle, bir işlev, dış işlev kapsamına erişimi olan başka bir işlev döndürdüğünde, JavaScript'te kapatmalar olarak adlandırılır.

Örneğin:

function outer (){
  let counter = 0;
  function inner (){
    counter++;
    return counter;
  }
  return inner
}


const result = outer()

function inner (){
  counter++;
  return counter;
}

Yani bir şekilde JavaScript önceki değeri hatırlıyor counterve matematiksel işlemi yapıyor.
Js'nin bunu nasıl yaptığını sorabilirsiniz.

Bir işlev bir işlev döndürdüğünde, yalnızca işlevi döndürmez, aynı zamanda o işlevin sözcüksel kapsamını da döndürür. Döndürülen işlevle ilgili tüm bu değişken, veriler, döndürülen işlevle birlikte gizli bir özellik olarak. Bu gizli özellik aynı zamandaBackpack

Bu sırt çantasının birçok adı var:

  • 'Değişken Ortam' (COVE) üzerinden kapatıldı
  • Kalıcı Sözcüksel Kapsam Referanslı Veriler (PLSRD)
  • Sırt çantası
  • kapatma

Başka bir örneğe bakalım:

function outer (){
  let counter = 0;
  function inner (){
    counter++;
    return counter;
  }
  return inner
}

const result = outer()

result() // 1
result() // 2

const anotherResult = outer()
anotherResult() // 1
anotherResult() // 2


Neden Kapanışlar:

  • Bir kez ve memoize gibi güçlü işlevleri etkinleştiren yardımcı işlev oluşturmamıza yardımcı olur .
  • Sözlüksel kapsamı ve kapanışları kullanarak Yineleyiciler ve Oluşturucular oluşturmamıza yardımcı olur .
  • Modül modeli de dahil olmak üzere birçok JavaScript tasarım modeli, genel ad alanını kirletmeden bir uygulama için durumu koruyarak kapatma kullanır.
  • Geri Aramalar ve Sözler, eşzamansız JavaScript dünyasında durumu sürdürmek için kapatmalara dayanır.