Variabel yang dinyatakan oleh Let dan Const hanya valid dalam blok kode.
{Biarkan a = 10; var b = 1;} a // ReferenceError: a tidak didefinisikan.b // 1Tidak ada promosi variabel
Variabel harus digunakan setelah deklarasi, jika tidak kesalahan akan dilaporkan.
var tmp = 123; if (true) {tmp = 'abc'; // ReferenceErrorlet tmp;}Pernyataan berulang tidak diperbolehkan
// function error () {let a = 10; var a = 1;}Ruang lingkup level blok
fungsi f () {console.log ('Saya di luar!'); } (function () {if (false) {// Ulangi fungsi fungsi f () {console.log ('I Am Inside!');}} f ();} ()); // Saya di dalam! ES5 Fungsi Promosi // Saya di luar! Lingkup Level Blok ES6perintah const
Menyatakan konstanta baca saja. Setelah dinyatakan, nilai konstanta tidak dapat diubah.
Setelah variabel dinyatakan, itu harus diinisialisasi segera dan tidak dapat dibiarkan ditugaskan nanti.
Variabel global yang dinyatakan oleh perintah LET, perintah const, dan perintah kelas, bukan milik properti objek global.
var a = 1; // Jika dalam lingkungan rep node, itu dapat ditulis sebagai global.a // atau menggunakan metode umum, itu dapat ditulis sebagai this.awindow.a // 1let b = 1; window.b // tidak terdefinisi
Selanjutnya, saya akan memperkenalkan perintah const ES6 kepada Anda secara terpisah
JS, yang selalu berpusat di ECMA, tidak pernah memiliki konsep konstanta, dan ES6 telah menebus cacat ini;
const foo = 'foo'; foo = 'bar'; // typeError: penugasan ke variabel konstan.
Contoh di atas menyatakan konstan dari tipe dasar. Jika Anda mencoba memodifikasi nilai awal, kesalahan akan dilaporkan; Jika itu adalah nilai dari jenis referensi, itu juga berlaku, tetapi satu hal yang perlu diperhatikan, berikan contoh:
const foo = []; foo = [1]; // penugasan ke variabel konstan.
Kesalahan normal, tidak masalah, lihat lagi:
const foo = [1,2,3]; foo [1] = 4; console.log (foo) // [1, 4, 3]
Mengapa tidak ada kesalahan dalam hal ini? Dan bisakah itu dimodifikasi dengan sukses? Perbedaan antara kedua contoh ini adalah bahwa yang pertama telah mengubah konten yang sesuai dari pointer (perlu terbiasa dengan jenis referensi JS) dan yang terakhir belum mengubah titik tetapi konten dari objek penunjuk telah berubah. Untuk Foo, saya hanya penunjuk yang bertanggung jawab untuk menunjuk ke objek yang sesuai. Adapun konten objek, saya tidak peduli dengan bisnis saya, jadi saya dapat memodifikasinya; Jika saya tidak ingin konten berubah, saya dapat menggunakan metode lain;
const foo = object.freeze ([1,2,3]); foo [1] = 4; console.log (foo) // [1, 2, 3]
Dengan cara ini Anda tidak perlu khawatir dimodifikasi;