Dalam es6, anda boleh menggunakan kata kunci const untuk mengisytiharkan pemalar baca sahaja, sintaks ialah "const constant name = constant value;"; setelah diisytiharkan, pemalar mesti dimulakan dan nilai yang dimulakan tidak boleh diubah . Pemalar yang diisytiharkan sebagai const tergolong dalam skop blok dan tertakluk kepada "zon mati sementara".
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Dalam es6, anda boleh menggunakan kata kunci const untuk mengisytiharkan pemalar baca sahaja.
es6 const kata kunci
const mengisytiharkan pemalar baca sahaja. Setelah diisytiharkan, pemalar mesti dimulakan dan nilai yang dimulakan tidak boleh diubah.
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
pemalar const mematuhi peraturan berikut:
tergolong dalam skop blok.
tertakluk kepada "zon mati sementara".
Ia tidak mencipta sebarang sifat global pada tetingkap.
tidak boleh ditugaskan semula.
tidak boleh dinyatakan semula.
const Sebaik sahaja pembolehubah diisytiharkan, ia mesti dimulakan serta-merta.
const foo; // SyntaxError: Missing initializer in const declaration
Kod di atas menunjukkan bahawa untuk const, jika anda hanya mengisytiharkan tanpa memberikan nilai, ralat akan dilaporkan.
Skop const adalah sama dengan arahan let: ia hanya sah dalam skop peringkat blok tempat ia diisytiharkan.
if (true) { const MAX = 5; } MAX // Uncaught ReferenceError: MAX is not defined
Pemalar yang diisytiharkan oleh arahan const juga tidak dinaikkan pangkat. Terdapat juga zon mati sementara dan hanya boleh digunakan selepas kedudukan yang diisytiharkan.
if (true) { console.log(MAX); // ReferenceError const MAX = 5; }
Kod di atas dipanggil sebelum MAX pemalar diisytiharkan dan ralat dilaporkan.
Malar yang diisytiharkan oleh const tidak boleh diisytiharkan berulang kali seperti let.
var message = "Hello!"; let age = 25; // 以下两行都会报错 const message = "Goodbye!"; const age = 30;
Intipati const
Apa yang const sebenarnya menjamin bukan bahawa nilai pembolehubah mesti tidak diubah, tetapi data yang disimpan dalam memori alamat yang ditunjukkan oleh pembolehubah tidak boleh diubah. Untuk jenis data ringkas (nilai angka, rentetan, nilai Boolean), nilai disimpan pada alamat memori yang ditunjuk oleh pembolehubah, dan oleh itu bersamaan dengan pemalar. Tetapi untuk data jenis komposit (terutamanya objek dan tatasusunan), alamat memori yang ditunjukkan oleh pembolehubah hanya menyimpan penunjuk kepada data sebenar Const hanya boleh menjamin bahawa penunjuk ini tetap (iaitu, ia sentiasa menunjuk ke alamat tetap yang lain). , sama ada struktur data yang ditunjukkannya berubah-ubah, ia benar-benar di luar kawalan. Oleh itu, anda mesti berhati-hati apabila mengisytiharkan objek sebagai pemalar.
const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {}; // TypeError: "foo" is read-only
Dalam kod di atas, foo pemalar menyimpan alamat, yang menghala ke objek. Satu-satunya perkara yang tidak boleh diubah ialah alamat ini, iaitu, anda tidak boleh menunjuk foo ke alamat lain, tetapi objek itu sendiri boleh berubah, jadi anda masih boleh menambah sifat baharu padanya.
Berikut ialah satu lagi contoh.
const a = []; a.push('Hello'); // 可执行 a.length = 0; // 可执行 a = ['Dave']; // 报错
Dalam kod di atas, pemalar a ialah tatasusunan itu sendiri boleh ditulis, tetapi jika tatasusunan lain ditetapkan kepada a, ralat akan dilaporkan.
Jika anda benar-benar mahu membekukan objek, anda harus menggunakan kaedah Object.freeze.
const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; // 严格模式时,该行会报错 foo.prop = 123;
Dalam kod di atas, foo tetap menghala ke objek beku, jadi penambahan atribut baharu tidak akan berfungsi dan ralat akan dilaporkan dalam mod ketat.
Selain membekukan objek itu sendiri, sifat objek juga harus dibekukan. Di bawah ialah fungsi yang membekukan objek sepenuhnya.
var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === 'object' ) { constantize( obj[key] ); } }); };
[Cadangan berkaitan: tutorial video javascript, Video pengaturcaraan]
Atas ialah kandungan terperinci Cara mengisytiharkan pemalar baca sahaja dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!