Skip to content

Commit a6043fa

Browse files
minor fixes
- Correction of synonyms: Sözcüksel Çevre -> Sözcüksel Ortam - Correction of grammatical errors. - fixed overflow of comment lines. - Fixed variable names.
1 parent 3f32d6b commit a6043fa

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

1-js/06-advanced-functions/03-closure/article.md

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ Aşağıdaki kodda Sözcüksel Ortam başlangıçta boş değildir. `say`'e sahi
114114
115115
`say()` fonksiyonu çağrısı sırasında dış değişkenler çağrılır, bu olaya daha detaylı bakacak olursak.
116116
117-
Fonksiyon ilk çalıştığında yeni bir Sözcüksel Çevre otomatik olarak yaratılır. Bu tüm fonksiyonlar için genel bir kuraldır. Bu Sözcüksel Çevre yerel değişkenlerin tutulması ve çağrının tüm parametrelerini tutar.
117+
Fonksiyon ilk çalıştığında yeni bir Sözcüksel Ortam otomatik olarak yaratılır. Bu tüm fonksiyonlar için genel bir kuraldır. Bu Sözcüksel Ortam yerel değişkenlerin tutulması ve çağrının tüm parametrelerini tutar.
118118
119119
<!--
120120
```js
@@ -129,7 +129,7 @@ say("Ahmet"); // Merhaba, Ahmet
129129
-->
130130
`say("Ahmet")` fonksiyonu çalıştığı sırada Sözcüksel Ortam aşağıdaki gibi olur:
131131
132-
![Sözcüksel Çevre](lexical-environment-simple.svg)
132+
![Sözcüksel Oram](lexical-environment-simple.svg)
133133
134134
Fonksiyon çağrıldığında ise iki tane sözcüksel ortam bulunmaktadır: içte olan(fonksiyon çağrısı için) ve dışta olan(evrensel):
135135
@@ -138,7 +138,7 @@ Fonksiyon çağrıldığında ise iki tane sözcüksel ortam bulunmaktadır: iç
138138
139139
İç Sözcük ortamı `outer` ile Dış Sözcük Ortamına referans olur.
140140
141-
**Kod değişkene ulaşmak istediğinde -- önce İç Sözcük ortamında arara, daha sonra dış sözcüm ortamına bakar ve daha sonra daha dıştakine bakar bu şekilde zincirin en sonuna kadar devam eder**
141+
**Kod değişkene ulaşmak istediğinde -- önce İç Sözcük ortamında arar, daha sonra dış sözcüm ortamına bakar ve daha sonra daha dıştakine bakar bu şekilde zincirin en sonuna kadar devam eder**
142142
143143
Eğer değişken hiçbir yerde bulunamazsa, sıkı modda hata verir. `use strict` kullanılmazsa tanımsız değişken yeni bir global değişken yaratır.
144144
@@ -151,7 +151,7 @@ Arama olayı bizim yazdığımız kodlarda nasıl işliyor buna bakalım:
151151

152152
Şimdi bölümün ilk başında sorulan sorulara cevap bulunabilir.
153153

154-
**Bir fonksiyon dışta bulunan değişkenin en son değerini alır**
154+
**Bir fonksiyon dışta bulunan değişkenin en son değerini alır.**
155155

156156
Bunun nedeni tanımlanan mekanizmadan dolayıdır. Eski değişkenler bir yere kaydedilmezler. Fonksiyon bunları istediğinde iç sözcük ortamından veya dış sözcük ortamından o anki değeri alır.
157157

@@ -167,7 +167,7 @@ function selamVer() {
167167
adi = "Mehmet"; // (*)
168168
169169
*!*
170-
selamVer(); // Pete
170+
selamVer(); // Mehmet
171171
*/!*
172172
```
173173

@@ -179,7 +179,7 @@ selamVer(); // Pete
179179
3. `selamVer()` fonksiyonu çalıştığında `adi` dğeişkenini dışarıdan alır. Bu `dış` sözcüksel ortamda değişkenin değeri `"Mehmet"`tir.
180180

181181

182-
```smart header="Bir çağrı -- bir Sözcüksel Ortam"
182+
```smart header="Bir Çağrı -- Bir Sözcüksel Ortam"
183183
184184
Fonksiyon Sözcük Ortamı her fonksiyon çağrıldığında yeniden yaratılır.
185185
@@ -279,7 +279,7 @@ Okumaya devam etmeden yukarıdaki sorulara cevap vermeye çalışın.
279279
Peki o zaman, şimdi cevaplar.
280280
281281
1. Hayır sıfırlayamaz. `sayac` yerel bir değişkendir ve dışarıdan erişilemez.
282-
2. Her `sayacUret` çağrısı o fonksiyona ait Sözcüksel Çevre üretir, bunun da kendine ait `sayac` değişkeni bulunmaktadır. Öyleyse `sayac` değişkenleri her fonksiyon için bağımsızdır denebilir.
282+
2. Her `sayacUret` çağrısı o fonksiyona ait Sözcüksel Ortam üretir, bunun da kendine ait `sayac` değişkeni bulunmaktadır. Öyleyse `sayac` değişkenleri her fonksiyon için bağımsızdır denebilir.
283283
284284
Örneğin:
285285
@@ -315,7 +315,7 @@ Aşağıda `sayacUret` fonksiyonunun adımları gösterilmektedir, her şeyi anl
315315
316316
Başlangıçta sadece `sayacUret` fonksiyonu bulunmaktadır, çünkü bu fonksiyon tanımıdır. Henüz çalışmadı.
317317
318-
Tüm fonksiyonlar başlangıçta gizli bir `[[Environment]]` değişkeni alırlar, bu yaratılmaya dair üretilecek Sözcüksel Çevreye referans olur. Bunun hakkında henüz bilgi verilmedi, fakat teknik olarak bunu fonksiyonun nerede yaratıldığını bilmesi olarak anlayabilirsiniz.
318+
Tüm fonksiyonlar başlangıçta gizli bir `[[Environment]]` değişkeni alırlar, bu yaratılmaya dair üretilecek Sözcüksel Ortama referans olur. Bunun hakkında henüz bilgi verilmedi, fakat teknik olarak bunu fonksiyonun nerede yaratıldığını bilmesi olarak anlayabilirsiniz.
319319
320320
Burada `sayacUret` Evrensel Sözcüksel Ortamda yaratıldı. Bundan dolayı `[[Environemnt]]` bu ortamın referansıdır.
321321
@@ -327,7 +327,7 @@ Aşağıda `sayacUret` fonksiyonunun adımları gösterilmektedir, her şeyi anl
327327
328328
`sayacUret()` fonksiyonu çağrıldığında, bu fonksiyonun değişkenlerini ve argümanlarını tutmak için Sözcüksel Ortam yaratılır.
329329
330-
Her Sözcüksel Çevre iki şeyi tutar:
330+
Her Sözcüksel Ortam iki şeyi tutar:
331331
1. Yerel değişkenlere ait Ortamsal Kayıtlar. Bu durumda `let sayac` çalıştırıldığında yerel değişken olarak `sayac` tutulmaktadır.
332332
333333
2. Dış sözcüksel referans, bu fonksiyonun `[[Environment]]`'i dir. Burada `sayacUret` fonksiyonunun `[[Environment]]`'i evrensel sözcüksel ortama referans verir.
@@ -336,7 +336,7 @@ Aşağıda `sayacUret` fonksiyonunun adımları gösterilmektedir, her şeyi anl
336336
337337
3. `sayacUret()` fonksiyonu çalıştığında küçük bir iç fonksiyon yaratılır.
338338
339-
Fonksiyonun nasıl yaratıldığı yani Fonksiyon Tanımıyla mı yoksa Fonksiyon ifadesiyle mi yaratıldığı önemli değildir. Tüm fonksiyonlar bulunduğu sözcüksel ortama referans eden `[[Environment]]` özelliği ile yaratılırlar. Bundan dolayı en küçük fonksiyon bile bu özelliği içerir.
339+
Fonksiyonun nasıl yaratıldığı yani Fonksiyon Tanımıyla mı yoksa Fonksiyon İfadesiyle mi yaratıldığı önemli değildir. Tüm fonksiyonlar bulunduğu sözcüksel ortama referans eden `[[Environment]]` özelliği ile yaratılırlar. Bundan dolayı en küçük fonksiyon bile bu özelliği içerir.
340340
341341
İçte olan yeni fonksiyon için `[[Environment]]` dğeişkeni var olan `sayacUret`'in Sözcüksel Ortamıdır.( Doğduğu yer )
342342
@@ -351,20 +351,20 @@ Aşağıda `sayacUret` fonksiyonunun adımları gösterilmektedir, her şeyi anl
351351
352352
Bu fonksiyonun sadece bir satır kodu var: `return sayac++`, sadece bu çalışacaktır.
353353
354-
5. `sayac()` çağrıldığında, "boş" bir Sözcüksel Ortam yaratılır. hiçbir yerel değişkeni yoktur. Fakat `sayac`'ın `[[Environment]]`'i dış referans olarak kullanılır. Bundan dolayı, daha önceden yapılan `sayacUret()`'in değişkenlerine erişebilir. Oluşturulduğu yerder:
354+
5. `sayac()` çağrıldığında, "boş" bir Sözcüksel Ortam yaratılır. hiçbir yerel değişkeni yoktur. Fakat `sayac`'ın `[[Environment]]`'i dış referans olarak kullanılır. Bundan dolayı, daha önceden yapılan `sayacUret()`'in değişkenlerine erişebilir. Oluşturulduğu yer:
355355
356356
![](lexenv-nested-makecounter-5.svg)
357357
358358
Değişkene erişmesi gerekirse önce kendi yerel sözcüksel ortamına(boş), sonra daha önce çağrılan `sayacUret()`'in sözcüksel ortamına, en son evrensel ortama bakar.
359359
360-
`sayac` için arama yaptığında, en yakınında `sayacUret`'in sözcüksel çevresi bulunmaktadır.
360+
`sayac` için arama yaptığında, en yakınında `sayacUret`'in sözcüksel ortamı bulunmaktadır.
361361
362362
Buradaki hafıza yönetimine dikkat ederseniz. `sayacUret()` çağrısı bittikten bir süre sonra, Sözcüksel ortam hafızada tutulur, çünkü içte bulunan fonksiyonun `[[Environment]]`'i `sayacUret`'e referans vermektedir.
363363
364364
Genel olarak, sözcüksel ortam objesi fonksiyon kullanılabilir olduğu sürece yaşar. Fonksiyon kullanılmadığında silinir.
365365
366366
367-
6. `sayac()` sadece `sayac` değişkenini döndürmekle kalmaz, artırırda. Dikkat ederseniz değişiklik sadece "olduğu yerde" yapıldı. Var olan `sayac` değişkeni bulunduğu ortamda değiştirildi.
367+
6. `sayac()` fonksiyonu sadece `sayac` değişkenini döndürmekle kalmaz, artırırda. Dikkat ederseniz değişiklik sadece "olduğu yerde" yapıldı. Var olan `sayac` değişkeni bulunduğu ortamda değiştirildi.
368368
369369
![](lexenv-nested-makecounter-6.svg)
370370
@@ -416,7 +416,7 @@ alert(kullanici); // Hata, böyle bir değişken bulunamamakta!
416416
417417
![](lexenv-if.svg)
418418
419-
Yeni sözcüksel ortam bilgileri dış çevreden alabilir, bundan dolayı `ifade` erişilebilirdir. Fakat `if` içerisindeki tüm değişkenler ve Fonksiyonel ifadeler kendi Sözcüksel Çevresinden erişilebilir, dışarıdan erişilemez.
419+
Yeni sözcüksel ortam bilgileri dış çevreden alabilir, bundan dolayı `ifade` erişilebilirdir. Fakat `if` içerisindeki tüm değişkenler ve Fonksiyonel ifadeler kendi Sözcüksel Ortamdan erişilebilir, dışarıdan erişilemez.
420420
421421
Örneğin `if` bittikten sonra `kullanici` değişkeni görünmez olacaktır.
422422
@@ -446,7 +446,7 @@ Döngüden sonra `i` görünmez olur.
446446

447447
Bu değişken isimleri genel kullanılırsa ve kod yazan kişi diğer değişkenin kullanıldığını bilmiyor ise yaşanılacak bir olaydır.
448448

449-
Bunlardan kaçınmak için bir kod bloğu oluşturarak dışarıda bulunan evrensel ortamdan isole edilebilir:
449+
Bunlardan kaçınmak için bir kod bloğu oluşturarak dışarıda bulunan evrensel ortamdan izole edilebilir:
450450

451451
```js run
452452
{
@@ -568,13 +568,12 @@ Sözcüksel Ortam objeleri aynı normal değerler gibi hafıza yönetimine konu
568568
return function() { alert(deger); };
569569
}
570570
571-
// 3 functions in array, every of them links to Lexical Environment
572571
// Dizideki 3 fonksiyon da kendine ait sözcüksel ortama sahiptirler.
573572
// LE LE LE
574573
let arr = [f(), f(), f()];
575574
```
576575
577-
- Sözcüksel Ortam objesi erişim kalmayınca ölür. Bu iç içe fonksiyonların referansı kalmadığında meydana gelir. Aşağıdaki kodda `g` erişilemez olduğunda `value`'da hafızadan silinir.
576+
- Sözcüksel Ortam objesi erişim olmayınca ölür. Bu iç içe fonksiyonların referansı kalmadığında meydana gelir. Aşağıdaki kodda `g` erişilemez olduğunda `value`'da hafızadan silinir.
578577
```js
579578
function f() {
580579
let value = 123;
@@ -584,21 +583,18 @@ Sözcüksel Ortam objeleri aynı normal değerler gibi hafıza yönetimine konu
584583
return g;
585584
}
586585
587-
let g = f(); // g canlı olursa
588-
ona karşılık gelen Sözcüksel Ortam'da hayatta kalır.
586+
let g = f(); // g canlı olursa ona karşılık gelen Sözcüksel Ortam'da hayatta kalır.
589587
590588
g = null; // şimdi hafıza temizlendi.
591589
```
592590

593-
### Gerçek-hayat Optimizasyonu
591+
### Gerçek-Hayat Optimizasyonu
594592

595593
Görüldüğü üzere, teoride bir fonksiyon hayatta olduğun sürece onun dışındaki ona bağlı değişkenler de hayatta kalır.
596594

597595
Pratikte ise, JavaScript motoru bunu optimize eder. Değişken kullanımını analiz eder ve eğer dışarıdaki fonksiyonun kullanılmadığı açık ise silinir.
598596

599-
**An important side effect in V8 (Chrome, Opera) is that such variable will become unavailable in debugging.**
600-
601-
**Bunun V8 ( Chrome, Opera)'daki yan etkisi ise böyle değişkenlerin debugging sırasında da görünememesidir.
597+
**Bunun V8 ( Chrome, Opera)'daki yan etkisi ise böyle değişkenlerin debugging sırasında da görünememesidir.**
602598
603599
Aşağıdaki örneğin Chrome'da konsolu açarak test ediniz.
604600

@@ -642,8 +638,8 @@ g();
642638

643639
```warn header="Görüşmek üzere!"
644640
645-
V8'in bu özelliğini bilmekte fayda var. Eğer Chrome/Opera ile ayıklama yapıyorsanız, er geç bu özellikle tanışacaksınız.
641+
V8'in bu özelliğini bilmekte fayda var. Eğer Chrome/Opera ile debugging yapıyorsanız, er ya da geç bu özellikle tanışacaksınız.
646642
647-
Bu ayıklayıcının(debugger) bir problemi değil, V8 motorunun bir özelliğidir. Belki ileride bu özellik değişebilir.
648-
Bu sayfayadaki örneği çalıştırarak her zaman kontrol edebilirsiniz.
643+
Bu bir debugger problemi değil, V8 motorunun bir özelliğidir. Belki ileride bu özellik değişebilir.
644+
Bu sayfayadaki örneği çalıştırarak her zaman bunu kontrol edebilirsiniz.
649645
```

0 commit comments

Comments
 (0)