Const JavaScript

ECMAScript 2015

ECMAScript 2015 memperkenalkan dua kata kunci JavaScript yang penting:let dan const.

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

Contoh

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

Coba Sendiri

scope blok

discope blokdalam blok const Variabel yang di deklarasikan dengan let Variabel mirip.

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

Contoh

var x = 10;
// Di tempat ini, x adalah 10
{ 
  const x = 6;
  // Di tempat ini, x adalah 6
}
// Di tempat ini, x adalah 10

Coba Sendiri

Kamu dapat menemukan di bab sebelumnya Let JavaScript Ditemukan lebih banyak pengetahuan tentang scope blok di sekolah menengah.

saat deklarasinya

JavaScript const Variabel harus diisi nilai saat deklarasinya:

Salah

const PI;
PI = 3.14159265359;

Benar

const PI = 3.14159265359;

Bukan konstan yang sebenarnya

Kata kunci const Terdapat kesalahan penalaran.

Itu belum mendefinisikan nilai konstan. Itu mendefinisikan referensi konstan ke nilai.

Jadi, kita tidak dapat mengubah nilai asli konstan, tetapi kita dapat mengubah properti objek konstan.

Nilai asli

Jika kita menugaskan nilai asli ke konstan, kita tidak dapat mengubah nilai asli:

Contoh

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

Coba Sendiri

Objek konstan dapat diubah

Kamu dapat mengubah properti objek konstan:

Contoh

// Kamu dapat membuat objek const:
const car = {type:"porsche", model:"911", color:"Black"};
// Kamu dapat mengubah properti:
car.color = "White";
// 您可以添加属性:
car.owner = "Bill";

Coba Sendiri

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

Contoh

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

Coba Sendiri

常量数组可以更改

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

Contoh

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

Coba Sendiri

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

Contoh

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

Coba Sendiri

浏览器支持

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 变量:

Contoh

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

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

Contoh

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

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

Contoh

const x = 2;       // Diizinkan
const x = 3;       // 不允许
x = 3;             // 不允许
var x = 3;         // 不允许
let x = 3;         // 不允许
{
  const x = 2;   // Diizinkan
  const x = 3;   // Tidak diizinkan
  x = 3;         // Tidak diizinkan
  var x = 3;     // Tidak diizinkan
  let x = 3;     // Tidak diizinkan
}

Deklarasi ulang di lingkungan atau blok lain const Diizinkan adalah:

Contoh

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

Penyangkalan

Dengan var Variabel yang didefinisikan akanPenyangkalanke atas. Jika Anda tidak mengerti apa penyangkalan (Hoisting), silakan belajar di bab tentang penyangkalan.

Anda dapat menggunakan variabel var sebelum deklarasi:

Contoh

carName = "Volvo";    // Anda dapat menggunakan carName di sini
var carName;

Coba Sendiri

Dengan const Variabel yang didefinisikan tidak akan diangkat ke atas.

const Variabel tidak dapat digunakan sebelum deklarasi:

Contoh

carName = "Volvo";    // Anda tidak dapat menggunakan carName di sini
const carName = "Volvo";