En son web geliştirme öğreticiler
 

JavaScript Sıkı kullanın


"use strict"; JavaScript kodu idam edilmesi gerektiğini tanımlar "strict mode" .


"use strict" Direktifi

"use strict" yönergesi JavaScript 1.8.5 yeni olan (ECMAScript version 5) .

Bu bir deyim ama JavaScript önceki sürümleri tarafından göz ardı bir değişmez ifade değildir.

Amacı "use strict" kod yürütülmesi gereken bir duruma işaret eder "strict mode" .

Sıkı moduyla, değil, örneğin, kayıt dışı değişkenler kullanabilirsiniz.

Yüksek düzey modu desteklenir:
sürümünden 10. Firefox sürüm 4 ila IE.
Chrome sürüm 13. Aşağıdakilerden Safari sürüm 5.1.
Opera sürümü 12 dan.


Sıkı Modu bildirme

Yüksek düzey modu ekleyerek ilan edilir "use strict"; Bir komut dosyası veya bir fonksiyonun başlangıcına.

Bir programın başında ilan ettiği bölge, küresel kapsamını (komut katı modda çalıştırır tüm kodu) sahiptir:

Örnek

"use strict";
x = 3.14;       // This will cause an error (x is not defined)
Kendin dene "

Örnek

"use strict";
myFunction();

function myFunction() {
    y = 3.14;   // This will also cause an error (y is not defined)
}
Kendin dene "

Bir işlev içinde ilan ettiği bölge, yerel kapsamını (işlev sıkı modunda olduğunda içeride sadece kodu) sahiptir:

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
   "use strict";
    y = 3.14;   // This will cause an error (y is not defined)
}
Kendin dene "

"use strict"; Sözdizimi

sözdizimi, sıkı modu bildirerek için, JavaScript eski sürümleri ile uyumlu olacak şekilde tasarlanmıştır.

Bir sayısal hazır Derleme (4 + 5;) veya değişmez bir dize ("John Doe";) bir JavaScript programında hiçbir yan etkisi yoktur. Bu sadece mevcut olmayan bir değişkene derler ve ölür.

Yani "use strict" ; Sadece bu yeni derleyici için önemli "understand" bunun anlamı.


Neden Sıkı Modu?

Yüksek düzey modu daha kolay yazmak için yapar "secure" JavaScript.

Sıkı mod değişiklikleri önceden kabul "bad syntax" gerçek hataları içine.

Bir örnek olarak, normal bir JavaScript, bir değişken adı yanlış yazıyor Yeni bir genel değişkeni oluşturur. Katı modda, bu imkansız yanlışlıkla global değişken oluşturmak için yapım bir hata verir.

Normal JavaScript'inizde, geliştirici olmayan yazılabilir özelliklerine değerler atayarak herhangi bir hata geri bildirim almaz.

Katı modda, bir yazılabilir özelliğine atama, bir alıcı-tek özellik, var olmayan bir özellik, var olmayan değişken veya var olmayan bir nesne, bir hata verir.


Sıkı Modu izin verilmiyor

deklare etmeden, bir değişken kullanarak, izin verilmez:

"use strict";
x = 3.14;                // This will cause an error (x is not defined)

Kendin dene "

Nesneler de değişkenlerdir.

deklare etmeden, bir nesne kullanarak, izin verilmez:

"use strict";
x = {p1:10, p2:20};      // This will cause an error (x is not defined)

Kendin dene "

Bir değişken silinmesi (or object) izin verilmez.

"use strict";
var x = 3.14;
delete x;                // This will cause an error

Kendin dene "

Bir fonksiyonu silme izin verilmez.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Kendin dene "

Bir parametre adını kopyalayarak izin verilmez:

"use strict";
function x(p1, p1) {};   // This will cause an error

Kendin dene "

Sekizli sayısal hazır izin verilmez:

"use strict";
var x = 010;             // This will cause an error

Kendin dene "

Kaçış karakterlere izin verilmez:

"use strict";
var x = \010;            // This will cause an error

Kendin dene "

bir salt okunur özellik yazma izin verilmez:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

Kendin dene "

Bir get-tek özelliği yazma izin verilmez:

"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Kendin dene "

Bir undeletable özelliği silme izin verilmez:

"use strict";
delete Object.prototype; // This will cause an error

Kendin dene "

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

"use strict";
var eval = 3.14;         // This will cause an error

Kendin dene "

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

"use strict";
var arguments = 3.14;    // This will cause an error

Kendin dene "

ifadesiyle izin verilmez:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

Kendin dene "

Güvenlik nedeniyle, eval() denirdi hangi kapsamda değişkenler oluşturmak için izin verilmez:

"use strict";
eval ("var x = 2");
alert (x);               // This will cause an error

Kendin dene "

Gibi işlev çağrıları olarak f() , bu değer genel bir amacı olmuştur. Katı modda, şimdi tanımlanmamış.


Gelecek kanıtı!

Gelecek saklıdır anahtar kelimeler katı modda izin verilmez. Bunlar:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // This will cause an error

Kendin dene "


Dikkat et!

Dikkat et!

"use strict" yönergesi sadece bir komut dosyası veya bir fonksiyonun başında kabul edilmektedir.