Javascript: Yürütme bağlamı

Jan 23 2023
Yazdığımız kodlar çalışırken arka planda bizim göremediğimiz işlemler oluyor. Javascript motoru kodları okuyup çalıştırırken bunu 2 aşamada yapar.

Yazdığımız kodlar çalışırken arka planda bizim göremediğimiz işlemler oluyor. Javascript motoru kodları okuyup çalıştırırken bunu 2 aşamada yapar. Yürütme bağlamı olarak adlandırılan bu genel süreç, oluşturma aşaması ve yürütme aşaması olarak belirttiğimiz gibi 2 aşamaya sahiptir .

Oluşturma aşaması olarak adlandırılan ilk aşamada , JS motoru bir tür koda alışma ve hazırlık çalışması yapar. Bir Bağlam oluşturur, değişkenleri ve işlevleri depolamak için bellek ayırır. Yürütme aşaması olan bir sonraki aşamada , JS motoru zaten aşina olduğu değişkenlere bahsettiğimiz değerleri atar ve işlevleri çağırır.

Bunu bir çeşit yemek hazırlamaya benzetebiliriz. Hazırlayacağımız yemek için hangi aksesuarların gerekli olduğunu baştan öğreniyoruz (Yaratılış aşaması).

oluşturma aşaması

Daha sonra erzak miktarını belirleyip mamayı hazırlamak için harekete geçiyoruz (Yürütme aşaması).

Yürütme aşaması

Kod ilk kez çalıştırıldığında, önce global yürütme bağlamı oluşturulur ve bahsedilen aşamalar yürütülür. Ardından, işlevler varsa ve çağrılırsa, işlevsel yürütme bağlamları oluşturulur ve her iki aşama da yürütülür.

Tüm bunları aşağıdaki kod ile pratik olarak görebiliriz.

  1. Bu kod motor tarafından okunduğunda, önce global bir içerik oluşturulacaktır .
  2. Genel yürütme bağlamı

2. Fark etmişsinizdir diye söylüyorum, getTechStack işlevinde tech değişkeniyle hiçbir şey yapılmadı . Bunun nedeni, değişkenin getTechStack işlevinin içinde olmasıdır. Bu fonksiyon 9. satırdaki gibi çağrıldıktan sonra yeni bir fonksiyonel içerik oluşturulacak ve bu bağlamda tekrar 2 faz yürütülecektir. Ancak o zaman teknoloji değişkeni diğer değişkenler gibi ele alınacaktır.

İşlev yürütme bağlamı

Global bağlamdan farklı olarak , fonksiyonel bağlamdaki global nesne , fonksiyonun parametrelerini ifade eden argümanlar nesnesine eşdeğer olacaktır .

Bu nedenle, genel bağlam dışında bir işlev her çağrıldığında, yeni bir bağlam oluşturulacak ve aynı prosedür tekrarlanacaktır.

Okuduğunuz için teşekkürler. :)

Diğer başlıklar: