Mod Ketat ialah ciri baharu ECMAScript 5, yang membolehkan anda meletakkan keseluruhan program, atau fungsi tertentu, dalam konteks pengendalian "ketat". Konteks ketat ini akan menghalang operasi tertentu dan membuang lebih banyak pengecualian.
Walaupun ECMAScript 5 serasi ke belakang dengan ECMAScript 3, dalam mod ketat semua ciri yang ditamatkan dalam ECMAScript 3 dilumpuhkan (atau ralat lempar) dan bukannya serasi.
Mendayakan mod ketat mempunyai faedah berikut:
1. Tangkap beberapa ralat pengaturcaraan dan buang pengecualian.
2. Cegah beberapa operasi yang agak "tidak selamat" (seperti mengakses pembolehubah global) dan buang pengecualian.
3. Lumpuhkan beberapa ciri yang mengelirukan.
Kebanyakan maklumat tentang mod ketat boleh didapati di halaman 223 Spesifikasi ES5 [PDF].
(Nota: Mod ketat ECMAScript 5 berbeza daripada mod ketat Firefox)
Cara mendayakan mod ketat
Tambah pernyataan ini pada permulaan program untuk mendayakan mod ketat untuk keseluruhan skrip:
Aplikasi praktikal untuk mendayakan mod ketat dalam fungsi adalah untuk menentukan keseluruhan perpustakaan kelas Javascript di dalam fungsi mod ketat, supaya ia tidak menjejaskan kod luaran:
(fungsi(){
"gunakan ketat";
// Tentukan perpustakaan anda dengan ketat...
})();
// Kod tidak ketat...
Pembolehubah dan Sifat
Penugasan kepada pembolehubah yang tidak ditentukan akan gagal dan bukannya menjadikan pembolehubah itu sebagai pembolehubah global.
Menulis sifat dengan sifat boleh tulis palsu, memadamkan sifat dengan sifat palsu boleh dikonfigurasikan atau menambah sifat boleh diperluas dengan sifat palsu akan mengakibatkan ralat (sifat ini telah dipersetujui terlebih dahulu). Pada masa lalu, operasi ini tidak memberikan pengecualian dan hanya gagal secara senyap.
Melakukan operasi padam pada pembolehubah, fungsi atau parameter fungsi akan menyebabkan ralat.
padam foo; // Ralat
padam ujian; // Ralat
ujian fungsi2(arg) {
padam arg; // Ralat
}
eval
Sebarang penggunaan nama "eval" (niat utama adalah untuk menunjukkan fungsi eval kepada pembolehubah atau sifat objek) adalah dilarang.
Fungsi
Mengatasi objek argumen mengakibatkan ralat:
dengan() { } pernyataan dipecahkan sepenuhnya dalam mod ketat.