Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Cara mengisytiharkan pemalar baca sahaja dalam es6

Cara mengisytiharkan pemalar baca sahaja dalam es6

青灯夜游
青灯夜游asal
2023-01-11 17:38:562031semak imbas

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".

Cara mengisytiharkan pemalar baca sahaja dalam es6

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn