JavaScript sıkı modu

"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声明

Kişisel olarak deneyin

Örnek

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // Bu bir hataya neden olacaktır, çünkü y henüz声明
}

Kişisel olarak deneyin

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
}

Kişisel olarak deneyin

"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

Kişisel olarak deneyin

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

Kişisel olarak deneyin

Değişken (veya nesne) silmek yasaktır:

"use strict";
var x = 3.14;
delete x;                // Bu hata verecektir

Kişisel olarak deneyin

Fonksiyonu silmek yasaktır:

"use strict";
function x(p1, p2) {}; 
delete x;                 // Bu hata verecektir

Kişisel olarak deneyin

Yineleyen parametre adları yasaktır:

"use strict";
function x(p1, p1) {};   // Bu hata verecektir

Kişisel olarak deneyin

Oktal değer metinleri yasaktır:

"use strict";
var x = 010;             // Bu hata verecektir

Kişisel olarak deneyin

Kurtarma karakterleri yasaktır:

"use strict";
var x = \010;            // Bu hata verecektir

Kişisel olarak deneyin

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

Kişisel olarak deneyin

Yalnızca okunabilen özelliklere yazma yasaktır:

"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;            // Bu hata verecektir

Kişisel olarak deneyin

Silinemeyen özelliklerin silinmesi yasaktır:

"use strict";
delete Object.prototype; // Bu hata verecektir

Kişisel olarak deneyin

Dizi "eval" değişken olarak kullanılamaz:

"use strict";
var eval = 3.14;         // Bu hata verecektir

Kişisel olarak deneyin

Dizi "arguments" değişken olarak kullanılamaz:

"use strict";
var arguments = 3.14;    // Bu hata verecektir

Kişisel olarak deneyin

with İzin verilmeyen ifadeler:

"use strict";
with (Math){x = cos(2)}; // Bu hata verecektir

Kişisel olarak deneyin

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

Kişisel olarak deneyin

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

Kişisel olarak deneyin

Uyarı

"use strict" Talimatlar sadece betik veya fonksiyon içindeBaşlangıçTanındı.