Artikel ini memberi Anda pengetahuan yang relevan tentang JavaScript, yang terutama memperkenalkan masalah yang berkaitan dengan mode ketat. Mode ketat mudah dipahami. Ini adalah mode JavaScript yang membatasi, yang membuat kode secara implisit melepaskan diri dari " "Mode malas", mari kita lihat. di dalamnya, saya harap ini akan bermanfaat bagi semua orang.
[Rekomendasi terkait: tutorial video javascript, web front-end]
Dalam standar ECMAScript5, JavaScript mengusulkan konsep mode ketat:
Mode ketat mudah dimengerti, ini adalah mode JavaScript yang membatasi, yang membuat kode secara implisit keluar dari "mode malas".
Ketika browser yang mendukung mode ketat mendeteksi mode ketat dalam kode, browser akan mendeteksi dan mengeksekusi kode dengan cara yang lebih ketat.
Mode ketat menerapkan beberapa batasan pada semantik JavaScript normal:
Mode ketat menghilangkan beberapa kesalahan diam asli dengan membuangnya .
Mode ketat memungkinkan mesin JS melakukan lebih banyak pengoptimalan saat mengeksekusi kode (tanpa harus berurusan dengan sintaks khusus).
Mode ketat menonaktifkan beberapa sintaksis yang mungkin ditentukan dalam versi ECMAScript mendatang.
Jadi bagaimana cara mengaktifkan mode ketat? Mode ketat mendukung migrasi terperinci:
Dapat mendukung pengaktifan mode ketat di file js;
Ini juga mendukung pengaktifan mode ketat untuk fungsi tertentu;
JavaScript dirancang agar lebih mudah digunakan oleh pengembang pemula, jadi terkadang sintaksnya salah, tetapi menurut saya JavaScript tidak dapat diuraikan secara normal;
Namun, metode ini mungkin meninggalkan risiko keamanan;
Dalam mode ketat, transaksi semacam ini akan dianggap sebagai kesalahan sehingga dapat segera ditemukan dan diperbaiki;
Berikut ringkasan beberapa batasan umum:
Ada dua cara untuk membuat variabel global secara tidak sengaja:
Deklarasikan variabel global secara global secara langsung tanpa menggunakan kata kunci
Jika Anda mendeklarasikan variabel tanpa menggunakan kata kunci di dalam suatu fungsi, fungsi tersebut akan dipromosikan menjadi variabel global secara default. Contoh kodenya adalah sebagai berikut:
'gunakan ketat' // Nonaktifkan pembuatan variabel global yang tidak disengaja message = 'Pembuatan variabel global yang tidak disengaja' console.log(pesan) //Pesan kesalahannya adalah: Kesalahan Referensi Tidak Tertangkap: pesan tidak ditentukan fungsi foo () { umur = 20 console.log(usia) } foo() //ReferenceError: usia tidak ditentukan
Contoh kodenya adalah sebagai berikut:
//Aktifkan mode ketat dan ubah masalah secara langsung menjadi kesalahan 'gunakan ketat' const v = 100;//(definisikan konstanta) v = 1.14; //Menetapkan kembali nilai (ke variabel) console.log(v); // TypeError Tidak Tertangkap: Penugasan ke variabel konstan.
Dalam mode ketat, Anda tidak dapat menggunakan operator batalkan pilihan pada variabel.
// Aktifkan mode ketat 'gunakan ketat' var v = 100; hapus v;//Dalam mode non-ketat: ini adalah kegagalan diam-diam, tidak ada kesalahan yang dilaporkan atau variabel v yang dihapus. konsol.log(v);//100 //Setelah mengaktifkan mode ketat, kesalahan malah dilaporkan Hapus pengidentifikasi yang tidak memenuhi syarat dalam mode ketat.
Dalam mode ketat, penggunaan kata kunci delete untuk array dan atribut metode memiliki efek yang sama.
// Aktifkan mode ketat 'gunakan ketat' // 1. Hapus konten array dalam mode ketat var arr = [1,2,3,4] hapus arr[0]; console.log(arr);//[ <1 item kosong>, 2, 3, 4 ] // 2. Atribut fungsi hapus dalam mode ketat var obj = { nama: 'Manusia Babi' } hapus objek.nama; console.log(obj.name)//tidak terdefinisi
Contoh kodenya adalah sebagai berikut:
'gunakan ketat' // Fungsi dengan nama parameter yang sama tidak diperbolehkan function foo2 (x, y, x) { konsol.log(x, y, x) } foo2(10, 20, 30) // SyntaxError: Nama parameter duplikat tidak diperbolehkan dalam konteks ini
Contoh kodenya adalah sebagai berikut:
// Format oktal asli var num1 = 0123 tidak diperbolehkan var num2 = 0o123 // Dapat ditulis dalam format ini sebagai oktal var num3 = 0x123 // Dapat ditulis dalam format ini sebagai heksadesimal var num4 = 0b100 // Dapat ditulis dalam format ini sebagai biner console.log(num1) // SyntaxError: Literal oktal tidak diperbolehkan dalam mode ketat. konsol.log(angka2, angka3, angka4) // 83 291 4
Contoh kodenya adalah sebagai berikut:
'gunakan ketat' var pesan = 'Halo Dunia'; var obj = { nama: 'jam', umur: 20 } //Pernyataan with dapat membentuk cakupannya sendiri. Saat mencetak age dalam pernyataan with, atribut age pada objek obj akan ditampilkan. Namun, ketika pesan atribut yang tidak ada dicetak dalam pernyataan with, maka akan dicetak satu tingkat ke lingkup luar. Satu tingkat untuk menemukan fungsi foo () { dengan (obj) { console.log(usia) console.log(pesan) } console.log(pesan) } foo() // SyntaxError: Kode mode ketat tidak boleh menyertakan pernyataan with
Contoh kodenya adalah sebagai berikut:
var jsString = "var pesan = 'halo dunia';console.log(pesan)" eval(jsString) // Keluaran halo dunia console.log(message) //Pesan kesalahannya adalah: ReferrenceError: pesan tidak ditentukan
开启严格模式eval函数不会向上引用变量所以全局作用域就没有message这个变量所以会报错
Contoh kodenya adalah sebagai berikut:
'gunakan ketat' // Dalam mode ketat, fungsi yang dijalankan sendiri (pengikatan default) akan mengarah ke tidak terdefinisi, dan dalam mode tidak ketat, fungsi tersebut akan mengarah ke jendela fungsi foo () { konsol.log(ini) } foo() // tidak terdefinisi