JavaScript sıkı modu
- Önceki Sayfa JS Hoisting
- Sonraki Sayfa JS this Anahtar Kelimesi
"use strict";
JavaScript kodunun "sıkı mod" olarak çalışması gerektiğini tanımlar.
"use strict" yönergesi
"use strict"
JavaScript 1.8.5'teki yeni bir yönergedir (ECMAScript sürüm 5).
Bir dilbilgisi değil, bir metin ifadeidir ve daha eski JavaScript sürümleri tarafından göz ardı edilir.
"use strict";
İşlevi, JavaScript kodunun "sıkı mod" olarak çalışması gerektiğini belirtmektir.
Sıkı modda, örneğin, henüz声明 olmayan değişkenleri kullanamazsınız.
Aşağıdaki sürümlerdeki tarayıcılar sıkı modu destekler:
- 10. sürümdeki IE'den itibaren
- 4. sürümdeki Firefox'tan itibaren
- 13. sürümdeki Chrome'dan itibaren
- 5.1 sürümdeki Safari'dan itibaren
- 12. sürümdeki Opera'dan itibaren
Sıkı modu声明
Betiğin veya fonksiyonun başına eklenerek "use strict";
Sıkı modu声明
Sıkı modu betiğin başında声明,gloabal etkili alan (betik içindeki tüm kod sıkı modda çalışır):
Örnek
"use strict"; x = 3.14; // Bu bir hataya neden olacaktır, çünkü x henüz声明
Örnek
"use strict"; myFunction(); function myFunction() { y = 3.14; // Bu bir hataya neden olacaktır, çünkü y henüz声明 }
Sıkı modu fonksiyon içinde声明,yerel etkili alan (sadece fonksiyon içindeki kod sıkı modda çalışır):
x = 3.14; // Bu bir hataya neden olmayacaktır myFunction(); function myFunction() { "use strict"; y = 3.14; // Bu bir hataya neden olacaktır }
"use strict" dilbilgisi
JavaScript programindeki numarik metinler (örneğin 4+5) veya string metinleri (\
Tüm "use strict";
Yalnızca anlayışını bilen yeni derleyicilere etki eder。
Neden Sıkı Mod Kullanılır?
Sıkı mod, "güvenli" JavaScript yazmayı daha kolay hale getirir。
Sıkı mod, daha önce kabul edilen "kötü dilbilgisi"'ni gerçek hatalara dönüştürür。
Örnek olarak, normal JavaScript'te yanlış yazılmış değişken adları yeni genel değişkenler oluşturur. Sıkı modda, bu işlem hata fırlatacak ve global değişkenler kazara oluşturulamayacaktır。
Normal JavaScript'te, yazılamayan özelliklere değer atama yaparsanız, geliştirici herhangi bir hata geri bildirimi almayacaktır。
Sıkı modda, yazılamayan, sadece okunabilen, olmayan özelliklere veya olmayan değişken veya nesneye değer atama, hata fırlatacaktır。
Sıkı modda yasak olan事项
Değişken kullanırken değişkeni tanımlamadan da yasaktır:
"use strict"; x = 3.14; // Bu hata verecektir
Nesne de bir değişkendir
Nesne kullanırken nesneyi tanımlamadan da yasaktır:
"use strict"; x = {p1:10, p2:20}; // Bu hata verecektir
Değişken (veya nesne) silmek yasaktır:
"use strict"; var x = 3.14; delete x; // Bu hata verecektir
Fonksiyonu silmek yasaktır:
"use strict"; function x(p1, p2) {}; delete x; // Bu hata verecektir
Yineleyen parametre adları yasaktır:
"use strict"; function x(p1, p1) {}; // Bu hata verecektir
Oktal değer metinleri yasaktır:
"use strict"; var x = 010; // Bu hata verecektir
Kurtarma karakterleri yasaktır:
"use strict"; var x = \010; // Bu hata verecektir
Yalnızca okunabilir özelliklere yazma yasaktır:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // Bu hata verecektir
Yalnızca okunabilen özelliklere yazma yasaktır:
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // Bu hata verecektir
Silinemeyen özelliklerin silinmesi yasaktır:
"use strict"; delete Object.prototype; // Bu hata verecektir
Dizi "eval" değişken olarak kullanılamaz:
"use strict"; var eval = 3.14; // Bu hata verecektir
Dizi "arguments" değişken olarak kullanılamaz:
"use strict"; var arguments = 3.14; // Bu hata verecektir
with
İzin verilmeyen ifadeler:
"use strict"; with (Math){x = cos(2)}; // Bu hata verecektir
Güvenlik nedenlerinden ötürü, eval()
Çağrıldığı etki alanında değişken oluşturmak için:
"use strict"; eval ("var x = 2"); alert (x); // Bu hata verecektir
f() benzeri fonksiyon çağrılarında this değeri genel nesnedir. İleri düzey modda, şimdi undefined
。
Gelecekteki Garanti
Gelecekte kullanılmak üzere ayırdığımız anahtar kelimeler kullanılmaz. Bunlar:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // Bu hata verecektir
Uyarı
"use strict"
Talimatlar sadece betik veya fonksiyon içindeBaşlangıçTanındı.
- Önceki Sayfa JS Hoisting
- Sonraki Sayfa JS this Anahtar Kelimesi