Petunjuk "penggunaan ketat"
Petunjuk "penggunaan ketat" baru di JavaScript 1.8.5 (ECMAScript versi 5).
Ini bukan pernyataan, tapi ekspresi harfiah, diabaikan oleh versi JavaScript sebelumnya.
Tujuan "penggunaan yang ketat" adalah untuk menunjukkan bahwa kode tersebut harus dijalankan dalam "mode ketat".
Dengan mode ketat, Anda tidak bisa, misalnya, menggunakan variabel yang tidak dideklarasikan.
Catatan Mode ketat didukung di:
Internet Explorer dari versi 10. Firefox dari versi 4.
Chrome dari versi 13. Safari dari versi 5.1. Opera dari versi 12.
Mendeklarasikan Mode Ketat
Modus ketat dinyatakan dengan menambahkan "use strict"; Ke awal skrip atau function.
Diumumkan pada awal skrip, ia memiliki cakupan global(semua kode dalam naskah akan dijalankan dalam mode ketat):
Contoh
"use strict";Contoh
x = 3,14; // Ini akan menyebabkan kesalahan(x tidak didefinisikan)
"Gunakan ketat";
myFunction();
function myFunction(){
y = 3,14; // Ini juga akan menyebabkan kesalahan(y tidak didefinisikan)
}
Dinyatakan di dalam sebuah function, ia memiliki cakupan lokal(hanya kode di dalam fungsinya dalam mode ketat):
x = 3,14; // Ini tidak akan menyebabkan kesalahan.Sintaks "use strict";
myFunction();
function myFunction(){
"Gunakan ketat";
y = 3,14; // Ini akan menyebabkan kesalahan(y tidak didefinisikan)
}
Sintaksnya, untuk menyatakan mode ketat, dirancang agar sesuai dengan versi JavaScript yang lebih lama.
Kompilasi numerik literal(4 + 5;) atau string literal("John Doe";) dalam program JavaScript tidak memiliki efek samping. Ini hanya mengkompilasi variabel yang tidak ada dan mati.
Jadi "gunakan ketat"; Hanya masalah bagi kompiler baru yang "mengerti" maknanya.
Mengapa Mode Ketat?
Mode yang ketat mempermudah penulisan JavaScript "aman".
Perubahan mode yang ketat sebelumnya telah menerima "sintaks yang buruk" menjadi kesalahan nyata.
Sebagai contoh, dalam JavaScript normal, mistyping nama variabel menciptakan variabel global baru. Dalam mode ketat, ini akan melempar kesalahan, sehingga tidak mungkin menciptakan variabel global secara tidak sengaja.
Dalam JavaScript normal, pengembang tidak akan menerima umpan balik kesalahan yang menugaskan nilai ke properti yang tidak dapat ditulis.
Dalam mode yang ketat, setiap tugas ke properti yang tidak dapat ditulis, properti pengambilalihan, properti yang tidak ada, variabel yang tidak ada, atau objek yang tidak ada, akan menimbulkan kesalahan.
Tidak Diizinkan dalam Mode Ketat
Menggunakan variabel, tanpa menyatakannya, tidak diperbolehkan:
"use strict";
x = 3,14; // Ini akan menyebabkan kesalahan(x tidak didefinisikan)
Catatan Objek adalah variabel juga.
Menggunakan sebuah objek, tanpa menyatakannya, tidak diijinkan:
"use strict";
x ={p1: 10, p2: 20}; // Ini akan menyebabkan kesalahan(x tidak didefinisikan)
Menghapus variabel(atau objek) tidak diperbolehkan.
"use strict";
var x = 3,14;
delete x; // Ini akan menyebabkan kesalahan
Menghapus function tidak diperbolehkan
"use strict";
function x(p1, p2){};
delete x; // Ini akan menyebabkan kesalahan
Duplikasi nama parameter tidak diperbolehkan:
"use strict";
function x(p1, p1){}; // Ini akan menyebabkan kesalahan
Literal numerik Oktal tidak diizinkan:
"use strict";
var x = 010; // Ini akan menyebabkan kesalahan
Karakter escape tidak diijinkan:
"use strict";
var x = \ 010; // Ini akan menyebabkan kesalahan
Menulis ke properti hanya-baca tidak diperbolehkan:
"use strict";
var obj ={};
Object.defineProperty(obj, "x",{value: 0, writable: false});
obj.x = 3,14; // Ini akan menyebabkan kesalahan
Menulis ke properti get-only tidak diperbolehkan:
"use strict";
var obj ={dapatkan x(){return 0}};
obj.x = 3,14; // Ini akan menyebabkan kesalahan
Menghapus properti yang tidak dapat dilepas tidak diperbolehkan:
"use strict";
delete Object.prototype; // Ini akan menyebabkan kesalahan
String "eval" tidak dapat digunakan sebagai variabel:
"use strict";
var eval = 3,14; // Ini akan menyebabkan kesalahan
String "argumen" tidak dapat digunakan sebagai variabel:
"use strict";
var argumen = 3,14; // Ini akan menyebabkan kesalahan
Pernyataan dengan pernyataan tidak diizinkan:
"use strict";
with (Math){x = cos(2)}; // Ini akan menyebabkan kesalahan
Untuk alasan keamanan, eval() tidak diizinkan untuk membuat variabel dalam lingkup dari mana ia disebut:
"use strict";
eval("var x = 2");
alert(x); // Ini akan menyebabkan kesalahan
Dalam function panggilan seperti f(), nilai ini adalah objek global. Dalam mode ketat, sekarang tidak terdefinisi.
Bukti masa depan!
Kata kunci yang dicadangkan di masa depan tidak diizinkan dalam mode ketat. Ini adalah:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict";
var public = 1500; // Ini akan menyebabkan kesalahan
Awas!
Catatan Perintah "use strict" hanya dikenali pada awal skrip atau function.
Out Of Topic Show Konversi KodeHide Konversi Kode