Yükleniyor...

Sıkı kip

Sıkı kip, eskiden sessizce geçen birkaç yanlışı durdurur. "use strict" en başa yazılır. Ondan sonra let de yoksa const da yoksa size = "regular" genel bir ad açmaz; ReferenceError fırlatır. Bu sayfanın satırı ReferenceError okunur.

Yapılacaklar listesi ve hata sayfası başka bitti

Yapılacaklar done: buy tea ile bitti. Hata sayfası bilerek new Error("missing size") fırlattı, catch de o iletiyi okudu. Bu sayfa senin kendi Error'ını fırlatmaz. Motor fırlatır, çünkü size hiç bildirilmedi. console.error hâlâ fırlatmaz.

Yönergenin yeri

"use strict" yalnızca betiğin ilk deyimi olarak, ya da tek bir fonksiyonun içindeki ilk deyim olarak işe yarar. Daha sonraki bir dizge hiçbir şeyi değiştirmez. Bir fonksiyon sıkı olabilir, betiğin geri kalanı olmayabilir. Modüller zaten sıkıdır, orada yönerge fazlalıktır.

setSize ne yapar

setSize, size değerini bildirmeden yazar. Çağrı try içindedir. Genel bir size oluşmaz.

Bildirimsiz atama

javascript
"use strict";
function setSize() {
size = "regular";
}
try {
setSize();
} catch (error) {
console.log(error.name);
}

Günlük ReferenceError yazar. Onarım şudur: let size = "regular". drink tea ise ve size böyle bildirilmişse, label tea / regular döndürebilir. order.size yazmak öteki doğru düzeltmedir, çünkü o ad vardır.

Adıyla çağırmak, nesne üstünden çağırmak

Fonksiyonu adıyla çağırmak this değerini ayarlamaz. Sıkı kipte this undefined olur. Metodu order üstünde çağırmak this değerini o nesne yapar, bu yüzden this.drink tea olur.

bare çağrısında this

javascript
"use strict";
function bare() {
return this;
}
const order = {
drink: "tea",
label() {
return this.drink;
}
};
console.log(bare());
console.log(order.label());

Günlükler önce undefined, sonra tea gelir. bare içinde this.drink okuma. Orada nesne yoktur, o okuma fırlatır.

Dört ayrım

Solda eski sessiz davranış durur. Sağda yönergenin etkisi durur.

📊 Yönerge neyi değiştirir

Eski sessiz davranış "use strict" ile
Bildirilmemiş size = "regular" genel bir ad oluşturur ReferenceError
bare içinde this genel nesnedir undefined
Yinelenen parametre, sonuncusu kalır SyntaxError
Bildirilmiş değişkende delete false döndürür SyntaxError

Yinelenen bir parametre ya da delete size, betik okunurken bozulur. Bu bir SyntaxError'dır, try onu yakalayamaz. Atamadan gelen ReferenceError fonksiyon çalışınca oluşur, catch onu görür. delete order.drink, özellik kaldırılabildiğinde iki kipte de serbesttir.

Sayfanın kendisi

Sayfa tek bir sıkı betiktir. Atama bozulur ve hatanın adı sayfaya yazılır.

Sayfada ReferenceError

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
"use strict";
const line = document.querySelector("#line");
try {
size = "regular";
} catch (error) {
line.textContent = error.name;
}
</script>
</body>
</html>

Satır ReferenceError okunur. done: buy tea değildir. caught / missing size değildir. size önüne let koy; bu catch artık çalışmaz.

Beş kısa adım

  1. setSize işlevini "use strict" altında çalıştır. Günlük ReferenceError olur.
  2. Atamayı let size = "regular" yap. Fırlatma gider.
  3. bare() çağır. Değer undefined olur.
  4. order.label() çağır. Değer tea olur.
  5. Sayfayı oku. Satır ReferenceError olur.

Gerçek sürçmeler

  • Yönergeyi başka bir deyimden sonraya koymak
  • Bildirilmemiş atamanın genel bir ad açmasını beklemek
  • bare çağrısının içinde this.drink okumak
  • Yinelenen parametreyi try ile yakalamak
  • Satırı done: buy tea diye okumak
  • Satırı caught / missing size diye okumak

Bunu hatırla

  • Yönerge önce
  • Bildirilmemiş size = "regular" ReferenceError fırlatır
  • bare içinde this undefined olur, order.label() tea döndürür
  • Yinelenen parametreler ve değişkende delete birer SyntaxError'dır
  • Sayfa satırı ReferenceError okunur

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
6
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek