Const JavaScript

ECMAScript 2015:

ECMAScript 2015 mengenalkan dua kata kunci penting baru dalam JavaScript:let dan: const.:

Through const Variabel yang didefinisikan dengan: let Variabel yang mirip seperti, tetapi tidak dapat diubah ulang:

Example

const PI = 3.141592653589793;:
PI = 3.14;      // Juga akan keluar kesalahan:
PI = PI + 10;   // Juga akan keluar kesalahan:

Try It Yourself

domain blok:

di:domain blok:dalam blok: const Variabel yang diumumkan dengan: let Variabel yang mirip.

Dalam contoh ini, x di deklarasikan dalam blok, berbeda dengan x yang di deklarasikan di luar blok:

Example

var x = 10;:
// Di sini, x adalah 10:
{ 
  const x = 6;:
  // Di sini, x adalah 6:
}
// Di sini, x adalah 10:

Try It Yourself

Anda boleh melihat di bab sebelumnya: Let JavaScript Dikembangkan lebih banyak tentang domain blok dalam sekolah menengah:

pada saat deklarasinya:

JavaScript: const Variabel mesti diset nilai saat deklarasinya:

Salah:

const PI;:
PI = 3.14159265359;:

Benar:

const PI = 3.14159265359;:

Bukan konstan sebenarnya:

Kata kunci: const Dapat menimbulkan kesan menyesatkan:

Tidak mendefinisikan nilai konstan. Ia mendefinisikan referensi konstan kepada nilai.

Sebagai akibatnya, kita tidak boleh mengubah nilai asal konstan, tetapi kita boleh mengubah sifat objek konstan.

Nilai asal:

Jika kita menugaskan nilai asal kepada konstan, kita tidak boleh mengubah nilai asal:

Example

const PI = 3.141592653589793;:
PI = 3.14;      // Juga akan keluar kesalahan:
PI = PI + 10;   // Juga akan keluar kesalahan:

Try It Yourself

Objek konstan boleh diubah:

Anda boleh mengubah sifat objek konstan:

Example

// Anda boleh mencipta objek const:
const car = {type:"porsche", model:"911", color:"Black"};
// Anda boleh mengubah sifat:
car.color = "White";
// 您可以添加属性:
car.owner = "Bill";

Try It Yourself

但是您无法重新为常量对象赋值:

Example

const car = {type:"porsche", model:"911", color:"Black"};
car = {type:"Volvo", model:"XC60", color:"White"};    // ERROR

Try It Yourself

常量数组可以更改

您可以更改常量数组的元素:

Example

// 您可以创建常量数组:
const cars = ["Audi", "BMW", "porsche"];
// 您可以更改元素:
cars[0] = "Honda";
// 您可以添加元素:
cars.push("Volvo");

Try It Yourself

但是您无法重新为常量数组赋值:

Example

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERROR

Try It Yourself

浏览器支持

Internet Explorer 10 或更早版本不支持 const 关键词。

下表定义了第一个完全支持 const 关键词的浏览器版本:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
2016 年 3 月 2013 年 10 月 2015 年 2 月 2016 年 9 月 2016 年 3 月

重新声明

在程序中的任何位置都允许重新声明 JavaScript var 变量:

Example

var x = 2;    // 允许
var x = 3;    // 允许
x = 4;        // 允许

在同一作用域或块中,不允许将已有的 varlet 变量重新声明或重新赋值给 const

Example

var x = 2;         // 允许
const x = 2;       // 不允许
{
  let x = 2;     // 允许
  const x = 2;   // 不允许
}

在同一作用域或块中,为已有的 const 变量重新声明声明或赋值是不允许的:

Example

const x = 2;       // Allows
const x = 3;       // 不允许
x = 3;             // 不允许
var x = 3;         // 不允许
let x = 3;         // 不允许
{
  const x = 2;   // Allows
  const x = 3;   // Not allowed
  x = 3;         // Not allowed
  var x = 3;     // Not allowed
  let x = 3;     // Not allowed
}

Re-declaration in another scope or block const Is allowed:

Example

const x = 2;       // Allows
{
  const x = 3;   // Allows
}
{
  const x = 4;   // Allows
}

Hoisting

Through var Defined variables areHoistingto the top. If you are not familiar with Hoisting, please study this chapter.

You can use var variables before declaration:

Example

carName = "Volvo";    // You can use carName here
var carName;

Try It Yourself

Through const Defined variables are not hoisted to the top.

const Variables cannot be used before declaration:

Example

carName = "Volvo";    // You cannot use carName here
const carName = "Volvo";