ES6 使用const命令聲明變量

本節咱們學習 ES6 中的 const 命令,const 也是 ES6 中新增的一個命令。const 聲明一個只讀常量,一旦聲明常量,就必須當即初始化。改變常量的值或者僅聲明但不賦初始值都會報錯。javascript

const聲明

const 聲明一個只讀的常量,一旦聲明,常量的值就不能改變。實際上,不能改動的不是值,而是變量指向的那個內存地址所保存的數據不得改動。java

示例:

使用 const 命令聲明變量其實和 let 的使用方法差很少,例如聲明一個常量 a數組

const a = 1;
console.log(a);

常量聲明後必須初始化

const 聲明常量後必須當即初始化,不能留到之後賦值。數據結構

示例:
const a;
a = 1;
console.log(a);

報錯信息:學習

SyntaxError: Missing initializer in const declaration

報錯信息提示咱們,const 聲明中缺乏初始值設定項,也就是說沒有賦初始值。指針

常量聲明後不能夠改變

使用 const 命令聲明一個常量後,常量的值便不能夠改變,不然會報錯。code

示例:

例如聲明 a 並將之賦值爲 1 以後,修改 a 的值爲10:對象

const a = 1;
a = 10; // 常量的值不可改變
console.log(a);

報錯信息以下所示:ip

TypeError: Assignment to constant variable.

const的其餘特性

constlet 仍是有不少類似點的,例如只在聲明所在的塊級做用域內有效。內存

示例:
{
    const a = 1;
}
console.log(a);

報錯信息以下,提示咱們 a 沒有被聲明:

ReferenceError: a is not defined

除此以外,還有 const 命令聲明的常量也是不提高的,一樣存在暫時性死區,只能在聲明的位置後面使用。

示例:
if(true){
    console.log(PI); 
    const PI = 10;
}

報錯信息以下,不能在初始化以前調用常量 PI

ReferenceError: Cannot access 'PI' before initialization

const 聲明的常量,也與 let 同樣不可重複聲明。

示例:
var a = 10;
let b = 20;

// 如下兩行都會報錯
const a = 100;
const b = 200;

報錯信息以下所示:

SyntaxError: Identifier 'a' has already been declared

const本質

const 實際上保證的,並非變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動。

  • 對於簡單類型的數據,例如數值、字符串、布爾值,值就保存在變量指向的那個內存地址,所以等同於常量。
  • 但對於複合類型的數據,例如對象和數組,變量指向的內存地址,保存的只是一個指向實際數據的指針,const 只能保證這個指針是固定的(即老是指向另外一個固定的地址),至於它指向的數據結構是否是可變的,就徹底不能控制了。
示例:

咱們來看下面這個例子:

const xkd = {};

xkd.prop = 123;
console.log(xkd.prop);  // 輸出:123


xkd = {};  // 輸出:TypeError: Assignment to constant variable.

上面代碼中,常量 xkd 儲存的是一個地址,這個地址指向一個對象。不可變的只是這個地址,即不能把 xkd 指向另外一個地址,但對象自己是可變的,因此依然能夠爲其添加新屬性。

想看更多能夠查看:https://www.9xkd.com/

相關文章
相關標籤/搜索