JavaScript'i Sıkı Kullan
"use strict";
JavaScript kodunun "katı modda" yürütülmesi gerektiğini tanımlar.
"Sıkı kullanım" Direktifi
Yönerge "use strict"
, ECMAScript sürüm 5'te yeniydi.
Bu bir ifade değil, JavaScript'in önceki sürümleri tarafından göz ardı edilen gerçek bir ifadedir.
Amacı "use strict"
, kodun "katı modda" yürütülmesi gerektiğini belirtmektir.
Katı modda, örneğin, bildirilmemiş değişkenleri kullanamazsınız.
Tüm modern tarayıcılar, Internet Explorer 9 ve daha eski sürümler dışında "katı kullanımı" destekler:
Directive | |||||
---|---|---|---|---|---|
"use strict" | 13.0 | 10.0 | 4.0 | 6.0 | 12.1 |
Tablodaki sayılar, yönergeyi tam olarak destekleyen ilk tarayıcı sürümünü belirtir.
Tüm programlarınızda katı modu kullanabilirsiniz. Bildirilmemiş değişkenleri kullanmanızı engellemek gibi daha temiz kod yazmanıza yardımcı olur.
"use strict"
sadece bir dizedir, bu nedenle IE 9 anlamasa bile hata vermez.
Sıkı Modu Bildirmek
Strict modu "use strict" eklenerek bildirilir ; bir komut dosyasının veya işlevin başına.
Bir betiğin başında bildirildiği gibi, genel kapsamı vardır (koddaki tüm kodlar katı modda yürütülür):
Örnek
"use strict";
x = 3.14; // This will cause an error
because x is not declared
Örnek
"use strict";
myFunction();
function myFunction() {
y = 3.14; // This will also cause an error
because y is not declared
}
Bir işlevin içinde bildirilir, yerel kapsamı vardır (yalnızca işlevin içindeki kod katı moddadır):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
"Sıkı kullanım"; Sözdizimi
Katı modu bildirmek için kullanılan sözdizimi, JavaScript'in eski sürümleriyle uyumlu olacak şekilde tasarlanmıştır.
Bir JavaScript programında sayısal bir değişmezi (4 + 5;) veya bir dize değişmezini ("John Doe";) derlemenin hiçbir yan etkisi yoktur. Basitçe var olmayan bir değişkene derlenir ve ölür.
Bu nedenle "use strict";
, yalnızca anlamını "anlayan" yeni derleyiciler için önemlidir.
Neden Sıkı Mod?
Katı mod, "güvenli" JavaScript yazmayı kolaylaştırır.
Katı mod, daha önce kabul edilen "hatalı sözdizimini" gerçek hatalara dönüştürür.
Örnek olarak, normal JavaScript'te bir değişken adının yanlış yazılması, yeni bir global değişken oluşturur. Katı modda, bu bir hata verir ve yanlışlıkla global bir değişken oluşturmayı imkansız hale getirir.
Normal JavaScript'te bir geliştirici, yazılabilir olmayan özelliklere değer atanırken herhangi bir hata geri bildirimi almaz.
Katı modda, yazılabilir olmayan bir özelliğe, yalnızca alıcı özelliğine, var olmayan bir özelliğe, var olmayan bir değişkene veya var olmayan bir nesneye yapılan herhangi bir atama bir hata verecektir.
Katı Modda İzin Verilmez
Bir değişkenin bildirilmeden kullanılmasına izin verilmez:
"use strict";
x = 3.14; // This will cause an error
Nesneler de değişkendir.
Bir nesnenin, onu bildirmeden kullanılmasına izin verilmez:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
Bir değişkenin (veya nesnenin) silinmesine izin verilmez.
"use strict";
let x = 3.14;
delete x; // This
will cause an error
Bir işlevin silinmesine izin verilmez.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Bir parametre adının kopyalanmasına izin verilmez:
"use strict";
function x(p1, p1) {}; // This will cause an error
Sekizli sayısal değişmezlere izin verilmez:
"use strict";
let x = 010; // This
will cause an error
Sekizli kaçış karakterlerine izin verilmez:
"use strict";
let x = "\010"; // This will cause an error
Salt okunur bir özelliğe yazmaya izin verilmez:
"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
Salt-alma özelliğine yazmaya izin verilmez:
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
Silinemez bir özelliğin silinmesine izin verilmez:
"use strict";
delete Object.prototype; // This will cause an error
Kelime eval
değişken olarak kullanılamaz:
"use strict";
let eval = 3.14; // This will cause an error
Kelime arguments
değişken olarak kullanılamaz:
"use strict";
let arguments = 3.14; // This will cause an error
Şu with
ifadeye izin verilmez:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
Güvenlik nedeniyle, eval()
çağrıldığı kapsamda değişkenler oluşturmasına izin verilmez:
"use strict";
eval ("let x = 2");
alert (x); // This
will cause an error
İşlevlerdeki anahtar sözcük , this
katı modda farklı davranır.
Anahtar this
kelime, işlevi çağıran nesneyi ifade eder.
Nesne belirtilmezse, katı moddaki undefined
işlevler, normal moddaki işlevler ise genel nesneyi (pencere) döndürür:
"use strict";
function myFunction() {
alert(this); // will alert "undefined"
}
myFunction();
Gelecek Kanıtı!
Gelecekteki JavaScript sürümleri için ayrılan anahtar sözcükler, katı modda değişken adları olarak KULLANILAMAZ.
Bunlar:
- uygular
- arayüz
- İzin Vermek
- paket
- özel
- korumalı
- halka açık
- statik
- teslim olmak
"use strict";
let public = 1500; // This will cause an error
Dikkat etmek!
"use strict" yönergesi yalnızca bir komut dosyasının veya işlevin başlangıcında tanınır.