tutorial pengembangan web terbaru
 

JavaScript Gunakan ketat


"use strict"; Mendefinisikan bahwa kode JavaScript harus dieksekusi dalam mode "ketat".


The "use strict" Petunjuk

The "use strict" direktif baru dalam JavaScript 1.8.5 (ECMAScript version 5) .

Ini bukan pernyataan, tapi ekspresi literal, diabaikan oleh versi sebelumnya dari JavaScript.

Tujuan dari "use strict" adalah untuk menunjukkan bahwa kode harus dijalankan dalam mode "ketat".

Dengan modus yang ketat, Anda tidak bisa, misalnya, menggunakan variabel dideklarasikan.

mode ketat didukung di:
IE dari versi 10. Firefox dari versi 4.
Chrome dari versi 13. Safari dari versi 5.1.
Opera dari versi 12.


Mendeklarasikan Strict Mode

Mode ketat dinyatakan dengan menambahkan "use strict"; ke awal script atau fungsi.

Menyatakan pada awal naskah, ia memiliki lingkup global (semua kode di script akan mengeksekusi dalam mode ketat):

Contoh

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

Contoh

"use strict";
myFunction();

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

Dideklarasikan di dalam fungsi, ia memiliki lingkup lokal (hanya kode dalam fungsi dalam modus ketat):

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)
}
Cobalah sendiri "

The "use strict"; Syntax

sintaks, untuk menyatakan modus yang ketat, dirancang agar kompatibel dengan versi JavaScript.

Kompilasi literal numerik (4 + 5;) atau string literal ("John Doe";) dalam program JavaScript tidak memiliki efek samping. Ini hanya mengkompilasi ke variabel non ada dan meninggal.

Jadi "use strict" ; hanya penting untuk compiler baru yang "mengerti" makna itu.


Mengapa Strict Mode?

mode ketat membuatnya lebih mudah untuk menulis "mengamankan" JavaScript.

Perubahan modus ketat sebelumnya diterima "sintaks yang buruk" ke dalam kesalahan yang nyata.

Sebagai contoh, di yang normal JavaScript, salah ketik nama variabel menciptakan variabel global yang baru. Dalam modus yang ketat, ini akan melemparkan kesalahan, sehingga mustahil untuk sengaja menciptakan variabel global.

Pada yang normal JavaScript, pengembang tidak akan menerima umpan balik kesalahan menempatkan nilai ke properti non-ditulis.

Dalam modus yang ketat, setiap tugas untuk properti non-ditulis, properti pengambil-satunya, yang tidak ada properti, variabel yang tidak ada, atau benda yang tidak ada, akan melempar kesalahan.


Tidak Diizinkan dalam Mode Strict

Menggunakan variabel, tanpa menyatakan itu, tidak diperbolehkan:

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

Cobalah sendiri "

Objek adalah variabel juga.

Menggunakan sebuah objek, tanpa menyatakan itu, tidak diperbolehkan:

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

Cobalah sendiri "

Menghapus variabel (atau objek) tidak diperbolehkan.

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

Cobalah sendiri "

Menghapus fungsi tidak diperbolehkan.

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

Cobalah sendiri "

Duplikasi nama parameter tidak diperbolehkan:

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

Cobalah sendiri "

Oktal literal numerik tidak diperbolehkan:

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

Cobalah sendiri "

Melarikan diri karakter tidak diperbolehkan:

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

Cobalah sendiri "

Menulis untuk properti read-only tidak diperbolehkan:

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

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

Cobalah sendiri "

Menulis untuk properti get-satunya tidak diperbolehkan:

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

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

Cobalah sendiri "

Menghapus properti undeletable tidak diperbolehkan:

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

Cobalah sendiri "

String "eval" tidak dapat digunakan sebagai variabel:

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

Cobalah sendiri "

String "argumen" tidak dapat digunakan sebagai variabel:

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

Cobalah sendiri "

Dengan pernyataan tidak diperbolehkan:

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

Cobalah sendiri "

Untuk alasan keamanan, eval() tidak diperbolehkan untuk membuat variabel dalam lingkup yang itu disebut:

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

Cobalah sendiri "

Dalam fungsi panggilan seperti f() , nilai ini adalah obyek global. Dalam mode ketat, sekarang terdefinisi.


Bukti masa depan!

kata kunci milik masa depan tidak diperbolehkan dalam mode yang ketat. Ini adalah:

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

Cobalah sendiri "


Awas!

Awas!

The "use strict" direktif hanya diakui di awal script atau fungsi.