En İyi Uygulamalarım – JavaScript

1. Önbelleği devre dışı bırakın

Firefox:
Geliştirici araçlarını açın -> Ayarları açın (F1) -> "HTTP önbelleğini devre dışı bırak (araç kutusu açıkken)"

Chrome:
DevTools’u açın -> Ayarları açın (F1) -> "Disable cache (while DevTools is open)"

2. JS konsolunu açık tutun

DevTools’ta Konsol sekmesini açın ve açık bırakın; böylece 1. adım etkin kalır, ayrıca ağdaki ve JS’teki hataları da fark edersiniz.

Ayrıca, siz bakmayı unuttuğunuzda bile JS hatalarını daha da iyi gösteren şu eklenti de tavsiye edilir:

3. JavaScript: Mutlaka okunması gereken “You Don't Know JS”

4. Noktalı virgül

// you want to return 5 and have ugly formatting:
return
5

// JavaScript Interpretation:
return;
5;

5. Mantıksal operatörler && ve ||

Böylece ifadeler (expression) de bağlanabilir ve bu, akla gelebilecek en kısa if deyimini mümkün kılar – bir syntactic sugar:

Bu yöntem varsayılan değerler için de sıkça kullanılır:

6. JavaScript pass-by-reference mı, yoksa pass-by-value mu?

JavaScript’te durum ilginç. Bir örnek:

function changeStuff(a, b, c) {
    a = a * 10;
    b.item = "changed";
    c = {item: "changed"};
}

var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

Şu çıktıyı üretir:

10
changed
unchanged

obj1 hiç referans olmasaydı, obj1.item üzerindeki değişikliğin fonksiyonun dışındaki obj1 üzerinde hiçbir etkisi olmazdı.

Argüman gerçek bir referans olsaydı, her şey değişirdi: num 100 olur, obj2.item da “changed” değerini içerirdi. Oysa num 10 olarak kalıyor ve obj2.item “unchanged” olarak kalıyor.

Aslında aktarılan öğe değer olarak aktarılır. Ancak değer olarak aktarılan şeyin kendisi bir referanstır. Teknik olarak buna call-by-sharing denir.

Pratikte bunun anlamı şudur: Parametrenin kendisini değiştirirseniz (num ve obj2 örneğinde olduğu gibi), bu, fonksiyona aktarılan asıl nesneyi etkilemez. Ancak parametrenin iç değerlerini değiştirirseniz, bu değişiklikler kalıcı olur (obj1 örneğinde olduğu gibi).