"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";
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)
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)
Bir değişken silinmesi (or object) izin verilmez.
"use strict";
var x = 3.14;
delete x; // This
will cause an error
Bir fonksiyonu silme izin verilmez.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Bir parametre adını kopyalayarak izin verilmez:
"use strict";
function x(p1, p1) {}; // This will cause an error
Sekizli sayısal hazır izin verilmez:
"use strict";
var x = 010; // This
will cause an error
Kaçış karakterlere izin verilmez:
"use strict";
var x = \010; // This will cause an error
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
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
Bir undeletable özelliği silme izin verilmez:
"use strict";
delete Object.prototype; // This will cause an error
Dize "eval" bir değişken olarak kullanılamaz:
"use strict";
var eval = 3.14; // This will cause an error
Dize "arguments" bir değişken olarak kullanılamaz:
"use strict";
var arguments = 3.14; // This will cause an error
ifadesiyle izin verilmez:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
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
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
Dikkat et!
Dikkat et!
"use strict" yönergesi sadece bir komut dosyası veya bir fonksiyonun başında kabul edilmektedir.