Mode kritis JavaScript

"use strict"; Mendefinikan bahawa kod JavaScript seharusnya dijalankan dalam "mode kritis".

Instruksi "use strict"

"use strict" Adalah arahan baru dalam JavaScript 1.8.5 (ECMAScript versi 5).

Ia bukanlah baris perintah, tetapi ekspresi teks, versi JavaScript yang lebih awal akan mengabaikannya.

"use strict"; Fungsi adalah untuk menunjukkan bahawa kod JavaScript seharusnya dijalankan dalam "mode kritis".

Dalam mode kritis, anda tak boleh, contohnya, menggunakan variabel yang belum dideklarasikan.

Berikut versi pelayar yang mendukung mode kritis:

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

Mengumumkan mode kritis

Dengan menambahkan di permulaan skrip atau function "use strict"; Untuk mengumumkan mode kritis.

Pada permulaan skrip, mempunyai lingkungan aksi global (semua kod dalam skrip akan dijalankan dalam mode kritis):

Contoh

"use strict";
x = 3.14;       // Ini akan memicu kesalahan, kerana x belum dideklarasikan

Coba Sendiri

Contoh

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

Coba Sendiri

Pada function deklarasikan mode kritis, mempunyai lingkungan aksi lokal (hanya kod dalam function akan dijalankan dalam mode kritis):

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

Coba Sendiri

"use strict"; tata bahaso

Tata bahaso mode kritis direka untuk kompatibel dengan versi JavaScript yang lebih awal.

Mengkompilasi teks angka (seperti 4+5) atau teks string ("Bill Gates") dalam program JavaScript tiada kesan negatif. Ia hanya akan dikompilasi menjadi variabel yang tak ada dan hilang.

Semua "use strict"; Hanya mempengaruhi pemcompilasi yang “memahami” maknanya.

Mengapa menggunakan mode ketat?

Mode ketat membuat kami lebih mudah menulis JavaScript “aman”.

Mode ketat mengubah “bad syntax” yang sebelumnya diizinkan menjadi kesalahan yang nyata.

Sebagai contoh, dalam JavaScript biasa, salah mengetik nama variabel akan menciptakan variabel global baru. Dalam mode ketat, hal ini akan melempar kesalahan, sehingga tidak mungkin menciptakan variabel global secara tak sengaja.

Pada JavaScript biasa, jika salah mengetik nama variabel akan menciptakan variabel global baru. Dalam mode ketat, hal ini akan melempar kesalahan, sehingga tidak mungkin menciptakan variabel global secara tak sengaja.

Pada mode ketat, menetapkan nilai kepada properti yang tak dapat ditulis, hanya dapat diakses, tak ada, atau menetapkan nilai kepada variabel atau objek yang tak ada akan melempar kesalahan.

Hal yang tidak diizinkan di mode ketat

Tidak diizinkan untuk menggunakan variabel tanpa mengumumkan variabel:

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

Coba Sendiri

objek juga adalah variabel

Tidak diizinkan untuk menggunakan objek tanpa mengumumkan objek:

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

Coba Sendiri

Tidak diizinkan untuk menghapus variabel (atau objek):

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

Coba Sendiri

Tidak diizinkan untuk menghapus fungsi:

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

Coba Sendiri

Terdapat kesalahan: nama parameter yang diulang tidak diizinkan:

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

Coba Sendiri

Terdapat kesalahan: teks angka oktal tidak diizinkan:

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

Coba Sendiri

Terdapat kesalahan: karakter escape tidak diizinkan:

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

Coba Sendiri

Tidak diizinkan untuk menulis properti yang hanya baca:

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

Coba Sendiri

Tidak diizinkan untuk menulis properti yang hanya dapat diakses:

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

Coba Sendiri

Tidak diizinkan untuk menghapus properti yang tak dapat dihapus:

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

Coba Sendiri

Terdapat kesalahan: string "eval" tidak boleh digunakan sebagai variabel:

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

Coba Sendiri

Terdapat kesalahan: string "arguments" tidak boleh digunakan sebagai variabel:

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

Coba Sendiri

with Perintah ini adalah yang tidak diizinkan:

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

Coba Sendiri

Disebabkan keperluan keselamatan, tidak diizinkan eval() Dalam lingkungan tempat ia dipanggil untuk membuat variable:

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

Coba Sendiri

Dalam panggilan fungsi seperti f(), nilai this adalah objek global. Dalam mode ketat, kini ia menjadi undefined

Pertahanan masa mendatang

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

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

Coba Sendiri

Amaran

"use strict" Perintah hanya boleh digunakan di dalam skrip atau fungsiMulanyaDikenali.