Anda dapat menggunakan mode ketat di semua program Anda. Ini membantu Anda menulis kode pembersih, seperti mencegah Anda menggunakan variabel yang tidak dideklarasikan
"use strict" hanyalah sebuah string, jadi IE 9 tidak akan membuat kesalahan meskipun tidak memahaminya
Mendeklarasikan Mode Ketat
Mode ketat dideklarasikan dengan menambahkan "gunakan ketat";
Dideklarasikan di awal skrip, ia memiliki cakupan global (semua kode dalam skrip akan dieksekusi dalam mode ketat)
Contoh
"gunakan ketat";
x = 3. 14;
Contoh
"gunakan ketat";
myFunction();
fungsi myFunction() {
y = 3. 14;
}
Dideklarasikan di dalam suatu fungsi, ia memiliki cakupan lokal (hanya kode di dalam fungsi yang dalam mode ketat)
x = 3. 14;
myFunction();
fungsi myFunction() {
"gunakan ketat";
y = 3. 14;
}
The "gunakan ketat";
Sintaks, untuk mendeklarasikan mode ketat, dirancang agar kompatibel dengan JavaScript versi lama
Mengkompilasi literal numerik (4 + 5;) atau string literal ("John Doe";) dalam program JavaScript tidak memiliki efek samping. Itu hanya mengkompilasi ke variabel yang tidak ada dan mati
Jadi "use strict"; hanya penting bagi kompiler baru yang "mengerti" artinya
Mengapa Mode Ketat?
Mode ketat memudahkan untuk menulis JavaScript "aman".
Perubahan mode ketat yang sebelumnya menerima "sintaks buruk" menjadi kesalahan nyata
Sebagai contoh, dalam JavaScript normal, salah ketik nama variabel membuat variabel global baru. Dalam mode ketat, ini akan menimbulkan kesalahan, sehingga tidak mungkin membuat variabel global secara tidak sengaja
Dalam JavaScript normal, pengembang tidak akan menerima umpan balik kesalahan yang menetapkan nilai ke properti yang tidak dapat ditulis
Dalam mode ketat, penugasan apa pun ke properti yang tidak dapat ditulis, properti khusus pengambil, properti yang tidak ada, variabel yang tidak ada, atau objek yang tidak ada, akan menimbulkan kesalahan
Tidak Diizinkan dalam Mode Ketat
Menggunakan variabel, tanpa mendeklarasikannya, tidak diperbolehkan
Objek juga merupakan variabel
Menggunakan objek, tanpa mendeklarasikannya, tidak diperbolehkan
Menghapus variabel (atau objek) tidak diperbolehkan
"gunakan ketat";
misalkan x = 3. 14;
hapus x;
Cobalah sendiri "
Menghapus fungsi tidak diperbolehkan
"gunakan ketat";
fungsi x(p1, p2) {};
hapus x;
Cobalah sendiri "
Menduplikasi nama parameter tidak diperbolehkan
Literal numerik oktal tidak diperbolehkan
Karakter escape oktal tidak diperbolehkan
Menulis ke properti hanya-baca tidak diperbolehkan
"gunakan ketat";
const obj = {};
Obyek. defineProperty(obj, "x", {value. 0, dapat ditulis. Salah});
keberatan. x = 3. 14;
Cobalah sendiri "
Menulis ke properti get-only tidak diperbolehkan
"gunakan ketat";
const obj = {dapatkan x() {kembalikan 0} };
keberatan. x = 3. 14;
Cobalah sendiri "
Menghapus properti yang tidak dapat dihapus tidak diperbolehkan
Kata eval_ tidak dapat digunakan sebagai variabel
Kata arguments_ tidak dapat digunakan sebagai variabel
Pernyataan with tidak diperbolehkan
Untuk alasan keamanan, eval() tidak diperbolehkan untuk membuat variabel dalam ruang lingkup dari yang disebut
Dalam mode ketat, variabel tidak dapat digunakan sebelum dideklarasikan
"gunakan ketat";
eval ("x = 2");
waspada (x);
Cobalah sendiri "
Dalam mode ketat, eval() tidak dapat mendeklarasikan variabel menggunakan kata kunci var
"gunakan ketat";
eval ("var x = 2");
waspada (x);
Cobalah sendiri "
eval() tidak dapat mendeklarasikan variabel menggunakan kata kunci let
eval ("biarkan x = 2");
waspada (x);
Cobalah sendiri "
Kata kunci this dalam fungsi berperilaku berbeda dalam mode ketat
Kata kunci this mengacu pada objek yang disebut fungsi
Jika objek tidak ditentukan, fungsi dalam mode ketat akan mengembalikan "use strict"1 dan fungsi dalam mode normal akan mengembalikan objek global (jendela)