Permalink
Browse files

Done proof-reading.

  • Loading branch information...
1 parent 8356946 commit d3a31b89e785ce11685a0b857500babe2f153371 @oozcitak oozcitak committed Apr 14, 2011
@@ -1,7 +1,7 @@
-## `Dizi` Oluşturucusu
+## `Array` Oluşturucusu
-`Dizi` oluşturucusunun parametrelerini nasıl değerlendirdiği belirsiz olduğu
-için, yeni diziler oluşturulurken her zaman dizi değişmezlerinin (`[]`
+`Array` oluşturucusunun parametrelerini nasıl değerlendirdiği belirsiz olduğu
+için, yeni diziler oluşturulurken her zaman dizi sabitlerinin (`[]`
notasyonu) kullanılması tavsiye olunur.
[1, 2, 3]; // Sonuç: [1, 2, 3]
@@ -11,14 +11,14 @@ notasyonu) kullanılması tavsiye olunur.
new Array(3); // Sonuç: []
new Array('3') // Sonuç: ['3']
-`Dizi` oluşturucusuna tek bir argüman verildiğinde, ve bu argümanın türü
+`Array` oluşturucusuna tek bir argüman verildiğinde, ve bu argümanın türü
`Number` ise, oluşacak *boş* dizinin `length` özelliği argümanın
değerine eşit olacaktır. Bu şekilde oluşturulan bir dizinin **sadece**
`length` özelliği belirlenmiş olup dizi indisleri tanımsız olacaktır.
var arr = new Array(3);
arr[1]; // undefined
- 1 in arr; // false, indisler ilklenmedi
+ 1 in arr; // false, indisler atanmadı
Dizinin uzunluğunu bu şekilde önceden belirlemek sadece bir iki durumda
kullanışlıdır. Bunlardan birisi bir döngüye gerek olmadan bir karakter
@@ -28,8 +28,8 @@ katarını tekrarlamaktır.
### Sonuç
-`Dizi` oluşturucusunun kullanılmasından mümkün olduğu kadar kaçınılmalıdır.
-Bunun yerine her zaman dizi değişmezleri tercih edilmelidir. Hem daha kısadırlar
-hem de daha anlaşılır bir sentaksa sahiptirler; bu nedenle programın okunabilirliğini
-de artırırlar.
+`Array` oluşturucusunun kullanılmasından mümkün olduğu kadar kaçınılmalıdır.
+Bunun yerine her zaman dizi sabitleri tercih edilmelidir. Hem daha kısadırlar
+hem de daha anlaşılır bir sentaksa sahiptirler; bu nedenle programın
+okunabilirliğini de artırırlar.
View
@@ -10,15 +10,15 @@ vardır.
> Ve *associative* diziler eleman sıralamasını **korurlar** ama, nesneler
> **korumazlar**.
-`for in` döngüsü prototip zincirindeki tüm özellikleri saydığı için ve bunu
+`for in` döngüsü prototip zincirindeki tüm özellikleri dolaştığı için ve bunu
engellemenin tek yolu [`hasOwnProperty`](#object.hasownproperty) kullanmak
olduğu için `for in` döngüsü sıradan bir `for` döngüsünden **yirmi kata kadar**
daha yavaştır.
### İterasyon
-Dizilerde iterasyon yaparken en iyi performans için en iyi yol klasik `for`
-döngüsünü kullanmaktır.
+Dizilerde iterasyon yaparken en iyi performansı elde etmenin en iyi yolu klasik
+`for` döngüsünü kullanmaktır.
var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i < l; i++) {
View
@@ -1,4 +1,4 @@
-## Neden `eval` kullanılmamalı
+## Neden `eval` Kullanılmamalı
`eval` fonksiyonu bir JavaScript kodunu lokal kapsamda yürütür.
View
@@ -1,7 +1,7 @@
-## Otomatik noktalı virgül ilavesi
+## Otomatik Noktalı Virgül İlavesi
JavaScript sentaksı C'ye benzese de, noktalı virgül kullanılması
-zurunlu **değildir**.
+zorunlu **değildir**.
Fakat JavaScript noktalı virgül kullanmayan bir dil değildir, hatta
programı anlayabilmek için noktalı virgüllere ihtiyaç duyar. Bu yüzden
@@ -85,7 +85,7 @@ eklenmesi gerektiğini gramer çözümleyicinin karar vermesi gerekiyor.
})(window); //<- eklendi
-> **Not:** JavaScript çözümleyicisi `return` ifadesinden heme sonra satır sonu
+> **Not:** JavaScript çözümleyicisi `return` ifadesinden hemen sonra satır sonu
> gelmesi durumunu "doğru" değerlendirmez. Bu durum otomatik noktalı virgül
> eklenmesinin istenmeyen bir yan etkisidir.
@@ -110,7 +110,7 @@ bu nedenle, yukarıdaki satır `undefined is not a function` hata mesajı ile bi
### Sonuç
-Noktalı virgüllerin **hiç bir zaman** ihmal edilmemesi tavsiye olunur, ayrıca
+Noktalı virgüllerin **hiç bir zaman** ihmal edilmemesi tavsiye edilir, ayrıca
ayraçların kendilerinden önceki ifade ile aynı satırda tutulması ve tek satırlık
`if` ve `else` ifadelerinde bile ayraçların ihmal edilmemesi önerilir. Her iki
önlem de hem programın tutarlılığını artıracak, hem de JavaScript
View
@@ -65,7 +65,7 @@ JavaScript dilinde `undefined` geleneksel *null* yerine kullanılmaktadır, ası
`null` (hem `null` değişmezi hem de değişken türü) ise kabaca başka bir
veri türüdür.
-`null` JavaScript içindeki kapalı olarak kullanılır (mesela prototip zincirinin
+`null` JavaScript içinde kapalı olarak kullanılır (mesela prototip zincirinin
sonuna gelindiği `Foo.prototype = null` ile belirtilir), fakat hemen her durumda
bunun yerine `undefined` kullanılabilir.
@@ -1,4 +1,4 @@
-## `arguments` nesnesi
+## `arguments` Nesnesi
JavaScript'te her fonksiyon kapsamında `arguments` adlı özel bir nesne
tanımlıdır. Bu nesne fonksiyon çağrılırken verilen argümanların listesini
@@ -1,6 +1,6 @@
## Closure ve Referanslar
-JavaScript'in en güçlü özelliklerinden biri de *closure* 'lara sahip olmasıdır.
+JavaScript'in en güçlü özelliklerinden biri de `closure` 'lara sahip olmasıdır.
Bunun anlamı her hangi bir kapsamın **her zaman** kendisini içeren kapsama
erişebilmesidir. JavaScript'te tek kapsam [fonksiyon kapsamı](#function.scopes)
olduğu için temelde tüm fonksiyonlar `closure` 'durlar.
@@ -3,7 +3,7 @@
JavaScript'te oluşturucular diğer dillerden farklıdır. Başında `new` bulunan
her fonksiyon çağrısı bir oluşturucudur.
-Oluşturucunun (çağırılan fonksiyonun) içinde `this` 'in değeri yeni yaratılan
+Oluşturucunun (çağrılan fonksiyonun) içinde `this` 'in değeri yeni yaratılan
`Object` 'dir. Bu **yeni** nesnenin [`prototipi`](#object.prototype) oluşturucu
olarak çağrılan fonksiyon nesnesinin prototipidir.
@@ -48,7 +48,7 @@ bu değer bir `Object` ise oluşturucu fonksiyon verilen değeri döndürür.
Foo(); // undefined
Yukarıdaki örnek bazı durumlarda doğru çalışıyor gibi görünebilir, ama
-JavaeScript'te [`this`](#function.this) 'in çalışma şeklinden dolayı `this`
+JavaScript'te [`this`](#function.this) 'in çalışma şeklinden dolayı `this`
'in değeri *global nesne* olacaktır.
### Nesne fabrikaları
@@ -72,19 +72,19 @@ döndürmesi gerekir.
Bar();
Yukarıda `Bar` fonksiyonunu çağıran her iki ifade de aynı şeyi döndürecektir:
-`method` adında bir [Closure](#function.closures) özelliği olan yeni yaratılmış
+`method` adında bir [`closure`](#function.closures) özelliği olan yeni yaratılmış
bir nesne.
Başka bir nokta da `new Bar()` fonksiyonunun döndürülen nesnenin prototipini
**etkilememesidir**. Yeni nesnenin prototipi oluşturulacaktır ancak `Bar` bu
nesneyi döndürmez.
-Yukarıdaki örnekte `new` anahtar kelimesini kullanmakla kullanamamak arasında
+Yukarıdaki örnekte `new` anahtar kelimesini kullanmakla kullanmamak arasında
hiçbir bir fark yoktur.
### Fabrikalar ile yeni nesneler oluşturmak
-`new` anahtar kelimesinin **kullanılmaması** tavsiye olunur, çünkü unutulması
+`new` anahtar kelimesinin **kullanılmaması** tavsiye edilir, çünkü unutulması
durumu hatalara sebep olabilir.
Bunun yerine yeni bir nesne oluşturmak için bir fabrika kullanılmalıdır.
@@ -1,4 +1,4 @@
-## Fonksiyon Tanımlası ve Fonksiyon İfadesi
+## Fonksiyon Tanımlaması ve Fonksiyon İfadesi
Fonksiyonlar JavaScript'te birinci sınıf nesnelerdir, yani sıradan bir değer
gibi kullanılabilirler. Bu özellik sıklıkla bir *isimsiz fonksiyonu* başka bir
@@ -11,7 +11,7 @@ geçirmekte kullanılır.
Yukarıdaki fonksiyon tanımlaması program çalışmadan önce
[yukarı taşınır](#function.scopes) ve böylece *tanımlandığı* kapsam içinde
-*her yerde* - hatta tanımlanmadan önce bile - kullanılabilir.
+*her yerde* (hatta tanımlanmadan önce bile) kullanılabilir.
foo(); // foo bu satır çalışmadan önce oluşturuldu
function foo() {}
View
@@ -16,8 +16,8 @@ kapsamı **bulunmaz**; bu nedenle, dilde sadece *fonksiyon kapsamı* mevcuttur.
> [otomatik noktalı virgül ilavesi](#core.semicolon) ile birleştiğinde fark
> edilmesizor hatalara neden olabilir.
-JavaScript'te isim uzayları kavramı da bulunmaz, tanımlanan herşey tek bir
-*genel olarak paylaşılmış* bir isim uzayının içindedir.
+JavaScript'te isim uzayları kavramı da bulunmaz, tanımlanan herşey
+*genel olarak paylaşılmış* tek bir isim uzayının içindedir.
Bir değişkene erişildiğinde, JavaScript değişkenin tanımını bulana dek yukarıya
doğru tüm kapsamlara bakar. Genel kapsama ulaşıldığı halde hala değişkenin
@@ -50,7 +50,7 @@ kelimesini kullanmamanın önemli sonuçları olabilir.
`test` fonksiyonun içinde `var` anahtar kelimesinin atlanması genel kapsamdaki
`foo` değişkeninin değerini değiştirecektir. İlk bakışta bu önemsiz gibi görünse
de, binlerce satırlık bir programda `var` kullanılmaması korkunç ve takibi güç
-hatalara neden olacaktor.
+hatalara neden olacaktır.
// genel kapsam
var items = [/* bir dizi */];
@@ -121,7 +121,7 @@ ifadelerini ve `function` bildirimlerini içinde bulundukları kapsamın en üst
taşır.
// var ifadeleri buraya taşınır
- var bar, someValue; // varsayılan olarak 'undefined' değerini alırlar
+ var bar, someValue; // varsayılan değerleri 'undefined' olur
// function bildirimi de yukarı taşınır
function test(data) {
@@ -204,15 +204,15 @@ Tek bir genel isim uzayının bulunmasının yol açtığı yaygın sonuç isim
})(); // fonksiyonu hemen çalıştır
-İsim siz fonksiyonlar [ifade](#function.general) olarak değerlendirilir;
+İsimsiz fonksiyonlar [ifade](#function.general) olarak değerlendirilir;
bu nedenle çağrılabilmeleri için önce değerlendirilmeleri gerekir.
( // parantezin içindeki fonksiyonu değerlendir
function() {}
) // ve fonksiyon nesnesini döndür
() // değerlendirmenin sonucu fonksiyon nesnesini çağır
-Bir fonksiyon ifadesini değerlendirip çağırmanın başka yolları da vadır ve
+Bir fonksiyon ifadesini değerlendirip çağırmanın başka yolları da vardır ve
yukarıdaki ile aynı sonucu verirler.
// İki farklı yöntem
@@ -222,7 +222,7 @@ yukarıdaki ile aynı sonucu verirler.
### Sonuç
Programı kendi isim uzayı ile kapsamak için her zaman *isimsiz fonksiyonların*
-kullanılması tavsiye olunur. Böylece hem isim çakışmalarından korunulmuş olunur,
+kullanılması tavsiye edilir. Böylece hem isim çakışmalarından korunulmuş olunur,
hem de programlar daha modüler halde yazılmış olur.
Ayrıca, genel değişkenlerin kullanılması **kötü bir uygulamadır**. Genel
View
@@ -19,7 +19,6 @@ Burada `this` yine *global* nesneye işaret eder.
> **ES5 Notu:** Mutlak modda bu davranış **kaldırılmıştır**. Bu durumda `this`
> kelimesinin değeri `undefined` olacaktır.
-Here `this` will again refer to the *global* object.
### Bir metod çağırma
@@ -49,7 +48,7 @@ fonksiyonun içinde `this` 'in değeri ilk argümanın değeri olarak **atanır*
Sonuç olarak, yukarıdaki örnekte *metod çağırma* durumu geçerli **olmayacak**,
bunun yerine `foo` fonksiyonu içinde `this` 'in değeri `bar` olacaktır.
-> **Not:** `this` kelimesi bir `Object` değişmezi içinde nesnenin kendisine
+> **Not:** `this` kelimesi bir `Object` sabiti içinde nesnenin kendisine
> işaret etmek için **kullanılamaz**. Yani `var obj = {me: this}` gibi bir
> ifadede `me`, `obj` nesnesine işaret **etmeyecektir**, `this` sadece yukarıda
> açıklanan beş durumdan biri ile kullanılabilir.
@@ -83,7 +82,7 @@ değişken oluşturmaktır.
}
`that` kelimesinin dilde özel bir anlamı yoktur, ama sıklıkla dış kapsamdaki
-`this` 'e işaret etmek için kullanılır. Bu yöntem [closure](#function.closures)
+`this` 'e işaret etmek için kullanılır. Bu yöntem [`closure`](#function.closures)
kavramı ile birlikte kullanıldığında `this` değerini program içinde taşımaya da
yarar.
View
@@ -1,7 +1,7 @@
## Yazarlar
-Bu rehber, hoş birer Stack Overflow kullanıcısı olan [Ivo Wetzel][1] (Yazım) ve
-[Zhang Yi Jiang][2] (Tasarım) tarafından hazırlanmıştır.
+Bu rehber, sevimli birer Stack Overflow kullanıcısı olan [Ivo Wetzel][1] (Yazım)
+ve [Zhang Yi Jiang][2] (Tasarım) tarafından hazırlanmıştır.
[1]: http://stackoverflow.com/users/170224/ivo-wetzel
[2]: http://stackoverflow.com/users/313758/yi-jiang
@@ -1,4 +1,4 @@
-## Katkıda bulunanlar
+## Katkıda Bulunanlar
- [Caio Romão][1] (Yazım düzeltmeleri)
- [Andreas Blixt][2] (Dil düzeltmeleri)
View
@@ -1,14 +1,15 @@
## Giriş
-**JavaScript Garden** JavaScript programlama dilinin acayiplik üzerine derlenmiş
-dökümanlardır. Henüz ustalaşmamış JavaScript programcılarının sıkça yaptığı
-yanlışlar, dile has ince hatalar ve performans sorunlarına karşı tavsiyeler
-içerir.
-
-JavaScript Garden'ın amacı JavaScript öğretmek **değildir**. Bu rehberde
-anlatılan konuları anlamak için JavaScript dilini önceden biliyor olmak şiddetle
-tavsiye olunur. Eğer JavaScript dilinin temellerini öğrenmek istiyorsanız,
-lütfen Mozilla Programcı Ağı'nda bulunan mükemmel [rehbere][1] başvurun.
+**JavaScript Garden** JavaScript programlama dilinin acayiplikleri üzerine
+derlenmiş bir döküman koleksiyonudur. Henüz ustalaşmamış JavaScript
+programcılarının sıkça yaptığı yanlışlar, dile has ince hatalar ve performans
+sorunlarına karşı tavsiyeler içerir.
+
+JavaScript Garden'ın amacı size JavaScript öğretmek **değildir**. Bu rehberde
+anlatılan konuları anlamak için JavaScript dilini önceden biliyor olmanız
+şiddetle tavsiye edilir. Eğer JavaScript dilinin temellerini öğrenmek
+istiyorsanız, lütfen Mozilla Programcı Ağı'nda bulunan mükemmel [rehbere][1]
+başvurun.
[1]: https://developer.mozilla.org/en/JavaScript/Guide
View
@@ -30,7 +30,7 @@ JavaScript nesneleri aynı zamanda bir [*Hashmap*][1] olarak da kullanılabilir,
nesneler temelde isimli özellikler ve bunlara karşılık gelen değerlerden
ibarettir.
-Nesne değişmezi (`{}` notasyonu) ile düz bir nesne yaratmak mümkündür. Bu yeni
+Nesne sabiti (`{}` notasyonu) ile düz bir nesne yaratmak mümkündür. Bu yeni
nesne [kalıtım](#object.prototype) ile `Object.prototype` 'dan türüyecektir ve
hiçbir [baz özelliğe](#object.hasownproperty) sahip olmayacaktır.
@@ -80,18 +80,18 @@ kullanmaktır; özelliğe `undefined` veya `null` değerlerini atamak **sadece**
}
Yukarıdaki örnek sonuç olarak hem `bar undefined` hem de `foo null` yazacaktır.
-Sadece `baz` özelliği kaldırılmışi olacak ve çıktıda görünmeyecektir.
+Sadece `baz` özelliği kaldırılmış olacak ve çıktıda görünmeyecektir.
### Anahtar notasyonu
var test = {
- 'case': 'bir anahtar kelime olduğu için katar notasyonu ile girildi',
- delete: 'aynı şekilde katar notasyonu gerekiyordu' // SyntaxError hatası verir
+ 'case': 'anahtar kelime olduğu için katar olarak girildi',
+ delete: 'yine bir anahtar kelime' // SyntaxError hatası
};
Nesne özellikleri düz karakterler olarak da katar notasyonu ile de
-tanımlanabilir. Fakat JavaScript çzöümleyicisinin bir başka tasarım hatası
-yüzünden, yukarıdaki örnek ECMAScript 5 öncesinde bir `SyntaxError` hatasına
+tanımlanabilir. Fakat JavaScript çözümleyicisinin bir başka tasarım hatası
+yüzünden, yukarıdaki örnek ECMAScript 5 öncesinde bir `SyntaxError` hatası
verecektir.
Bu hata `delete` 'in bir *anahtar kelime* olmasından kaynaklanır, bu nedenle
@@ -42,7 +42,7 @@ doğru sonuç alabilmek için `hasOwnProperty `*haricen* kullanılmalıdır.
foo.hasOwnProperty('bar'); // her zaman false verir
- // hasOwnProperty haricen kullanıldığında 'this' foo olarak atanır
+ // hasOwnProperty haricen kullanıldığında 'this' foo olur
{}.hasOwnProperty.call(foo, 'bar'); // true
### Sonuç
@@ -56,15 +56,15 @@ nesneyi kullanmasıdır; bu nedenle, tüm `Bar` nesneleri **aynı** `value`
> **Not:** `Bar.prototype = Foo` gibi bir ifade **kullanmayın**, çünkü `Foo`
> 'nun prototipine değil fonksiyon nesnesine işaret edecektir. Yani
> prototip zinciri `Foo.prototype` değil `Function.prototype` üzerinden
-> gidecektir; ve bu yüzden, `method` prototip zincirinden bulunmayacaktır.
+> gidecektir; ve bu yüzden, `method` prototip zincirinde bulunmayacaktır.
### Özelliklere bulmak
Bir nesnenin özelliklerine erişildiğinde, JavaScript, istenen isimdeki özelliği
bulana kadar prototip zincirinde **yukarı** doğru dolaşır.
Zincirin en üstüne ulaştığında (yani `Object.protype`) ve hala istenen özelliği
-bulamamışsa sonuç olarak [undefined](#core.undefined) verecektir.
+bulamamışsa sonuç olarak [`undefined`](#core.undefined) verecektir.
### prototype özelliği
@@ -93,7 +93,7 @@ yapıldığında da prototip zinciri üzerindeki **tüm** özelliklere bakılaca
Sıklıkla yapılan bir hata `Object.protype` 'ı veya diğer baz prototipleri
genişletmektir.
-Bu tekniğe [monkey patching][1] denir ve *kapsüllemeyi* bozar. Bu teknik
+Bu tekniğe [*monkey patching*][1] denir ve *kapsüllemeyi* bozar. Bu teknik
[Prototype][2] gibi bazı popüler sistemlerde kullanılsa bile, temel nesne
türlerine *standart olmayan* özellikler eklenmesinin geçerli iyi bir nedeni
yoktur.
Oops, something went wrong.

0 comments on commit d3a31b8

Please sign in to comment.