CodeBlanks Logo Icon CodeBlanks

Mantıksal atama

JavaScript kursu · Başlangıç · Ders 92/133

&&=, ||= ve ??= ile kısayol mantıksal atamalarını öğrenirsin.

Mantıksal atama

JavaScript, mantıksal işleçleri atamayla birleştiren üç kısayol sunar: &&=, ||= ve ??=. Bunlar bir değişkeni yalnızca gerekli olduğunda günceller ve kodu kısa tutar.

x ||= 5, x falsy ise 5 atar. x &&= 5, x truthy ise 5 atar. x ??= 5, x null/undefined ise 5 atar. Örnek: config.timeout ??= 3000;. timeout zaten bir değerse korunur; yoksa 3000 olur.

Hangi işleç ne zaman?

Üç işleç farklı koşullarda atama yapar, bu yüzden doğru olanı seçmelisin. ||= falsy değerleri değiştirir; 0, "" veya false da atar. ??= yalnızca null ve undefined için atar.

&&= ise yalnızca değişken truthy ise atar; genellikle bir nesnenin özelliğini koşullu güncellemek için kullanılır. Örnek: item.inStock &&= true;. item.inStock varsa true yapılır. Böylece her işleç farklı bir niyete uygun çıkar.

Uygulama ||= ile varsayılan ver

config değişkenini { retries: 0 } yap. config.retries ||= 3 yaz. config.retries'i yazdır.

Örnek çözümü göster
const config = { retries: 0 };
config.retries ||= 3;
console.log(config.retries);

Uygulama Üç atamayı birleştir

state değişkenini { count: 0, label: null, mode: "on" } yap. state.count ||= 5 yaz. state.label ??= "Varsayılan" yaz. state.mode &&= "active" yaz. state'i yazdır.

Örnek çözümü göster
const state = { count: 0, label: null, mode: "on" };
state.count ||= 5;
state.label ??= "Varsayılan";
state.mode &&= "active";
console.log(state);

Kendini test et

  1. Hangi işleç yalnızca null/undefined için atama yapar?

    • ??=
    • ||=
    • &&=
    • =
    Cevabı göster

    ??= — Doğru. ??= yalnızca null ve undefined için atama yapar.

  2. ??= ile atama

    const config = { timeout: null };
    config.timeout____ 3000;
    console.log(config.timeout);
    Cevabı göster
    const config = { timeout: null };
    config.timeout??= 3000;
    console.log(config.timeout);
  3. İşleci davranışıyla eşleştir

    ||=
    falsy ise atar
    ??=
    null/undefined ise atar
    &&=
    truthy ise atar
    =
    her zaman atar

Başlangıç bölümündeki tüm dersler