Mode strict JavaScript

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

Perintah "use strict"

"use strict" Adalah perintah baru di JavaScript 1.8.5 (ECMAScript versi 5).

Ini bukan baris perintah, melainkan ekspresi teks, versi JavaScript yang lebih lama akan mengabaikannya.

"use strict"; Fungsi adalah untuk menunjukkan bahwa kode JavaScript harus dieksekusi dalam "mode strict".

Dalam mode strict, Anda tidak dapat, contohnya, menggunakan variabel yang belum diumumkan.

Berikut adalah versi browser yang mendukung mode strict:

  • Versi 10 setelah IE
  • Versi 4 setelah Firefox
  • Versi 13 setelah Chrome
  • Versi 5.1 setelah Safari
  • Versi 12 setelah Opera

Mengumumkan mode strict

Dengan menambahkan di awal skrip atau function: "use strict"; Untuk mengumumkan mode strict.

Pada awal skrip, memiliki area efektif global (semua kode di dalam skrip akan dijalankan dalam mode strict):

Contoh

"use strict";
x = 3.14;       // Ini akan memicu kesalahan, karena x belum diumumkan

Coba Sendiri

Contoh

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // Ini akan memicu kesalahan, karena y belum diumumkan
}

Coba Sendiri

Pada function yang mengumumkan mode strict, memiliki area efektif lokal (hanya kode di dalam function yang dijalankan dalam mode strict):

x = 3.14;       // Ini tidak akan memicu kesalahan
myFunction();
function  myFunction() {
	"use strict";
	 y = 3.14;   // Ini akan memicu kesalahan
}

Coba Sendiri

"use strict"; sintaks

Sintaks mode strict dirancang untuk kompatibel dengan versi JavaScript yang lebih lama.

Mengkompilasi teks angka (seperti 4+5) atau teks string ("Bill Gates") dalam program JavaScript tidak akan mengakibatkan efek negatif. Ini hanya akan dikompilasi ke variabel yang tidak ada dan menghilang.

Semua "use strict"; Hanya mempengaruhi penyetaraan yang baru yang “memahami” maknanya。

Mengapa menggunakan mode kaku?

Mode kaku membuat kami lebih mudah menulis JavaScript “aman”。

Mode kaku mengubah “bad syntax” yang sebelumnya diterima menjadi kesalahan yang nyata。

Sebagai contoh, di JavaScript biasa, penulisan salah nama variabel akan menciptakan variabel global baru. Dalam mode kaku, hal ini akan memicu kesalahan, sehingga tidak mungkin menciptakan variabel global secara tidak sengaja.

Pada JavaScript biasa, jika penulisan nama variabel salah, pengembang tidak akan mendapatkan umpan balik kesalahan.

Pada mode kaku, penugasan ke properti yang tidak dapat ditulis, hanya dapat diakses, tidak ada, atau penugasan ke variabel atau objek yang tidak ada, akan memicu kesalahan。

Hal yang tidak diizinkan dalam mode kaku

Menggunakan variabel tanpa mengumumkan variabel adalah tidak diizinkan:

"use strict";
x = 3.14;                // Ini akan memicu kesalahan

Coba Sendiri

Objek juga adalah variabel

Menggunakan objek tanpa mengumumkan objek adalah tidak diizinkan:

"use strict";
x = {p1:10, p2:20};      // Ini akan memicu kesalahan

Coba Sendiri

Menghapus variabel (atau objek) adalah tidak diizinkan:

"use strict";
var x = 3.14;
delete x;                // Ini akan memicu kesalahan

Coba Sendiri

Menghapus fungsi adalah tidak diizinkan:

"use strict";
function x(p1, p2) {}; 
delete x;                 // Ini akan memicu kesalahan

Coba Sendiri

Nama parameter yang diulang adalah tidak diizinkan:

"use strict";
function x(p1, p1) {};   // Ini akan memicu kesalahan

Coba Sendiri

Teks angka oktal adalah tidak diizinkan:

"use strict";
var x = 010;             // Ini akan memicu kesalahan

Coba Sendiri

Simbol ekuasi adalah tidak diizinkan:

"use strict";
var x = \010;            // Ini akan memicu kesalahan

Coba Sendiri

Menuliskan properti read-only adalah tidak diizinkan:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;            // Ini akan memicu kesalahan

Coba Sendiri

Menuliskan properti yang hanya dapat diakses adalah tidak diizinkan:

"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;            // Ini akan memicu kesalahan

Coba Sendiri

Menghapus properti yang tidak dapat dihapus adalah tidak diizinkan:

"use strict";
delete Object.prototype; // Ini akan memicu kesalahan

Coba Sendiri

String "eval" tidak boleh digunakan sebagai variabel:

"use strict";
var eval = 3.14;         // Ini akan memicu kesalahan

Coba Sendiri

String "arguments" tidak boleh digunakan sebagai variabel:

"use strict";
var arguments = 3.14;    // Ini akan memicu kesalahan

Coba Sendiri

with Perintah ini tidak diizinkan:

"use strict";
with (Math){x = cos(2)}; // Ini akan memicu kesalahan

Coba Sendiri

Dengan pertimbangan keamanan, tidak diizinkan eval() Dalam lingkungan konteks yang dipanggil:

"use strict";
eval ("var x = 2");
alert (x);               // Ini akan memicu kesalahan

Coba Sendiri

Dalam pemanggilan fungsi seperti f(), nilai this adalah objek global. Dalam mode ketat, sekarang ini menjadi undefined.

Penjaminan masa mendatang

Kata kunci yang disyaratkan untuk masa mendatang tidak diizinkan dalam mode ketat. Ini termasuk:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // Ini akan memicu kesalahan

Coba Sendiri

Peringatan

"use strict" Instruksi hanya dapat digunakan di dalam skrip atau fungsiAwalDikenali.