JavaScript const 命令

admin發表於2018-08-30

常量在眾多主流程式語言中是一個普通概念。

但JavaScript比較特別,直到ES2015才改變無常量的狀況。

使用const可以宣告一個常量,程式碼演示如下:

[JavaScript] 純文字檢視 複製程式碼
const url = "softwhy.com";

上面程式碼宣告一個常量url並賦值為"softwhy.com"。

看上去和宣告一個變數沒有什麼區別,既然是一個單獨的語法結構,自然有其特點。

const和let命令有如下共同特性:

(1).建立塊級作用域。

(2).不存在提升現象。

(3).temporal dead zone。

(4).不允許在同一作用域內重複宣告。

(5).不會成為全域性屬性。

這些共同特點,本文就不再介紹,具體參閱JavaScript let 命令一章節。

一.常量被宣告後,值無法被改變:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
const url = "softwhy.com";
console.log(url);
url="www.softwhy.com";
console.log(url);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/30/002303c3ln3aljleanamsn.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼中宣告瞭一個常量url,在宣告的同時賦值。

但是由於常量不允許後續再修改它的值,所以程式碼會報錯。

二.常量在宣告的同時必須賦值:

首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
let webName;
webName="螞蟻部落";

上面的程式碼中,變數的宣告和賦值是分開的,但是常量中是不允許這種操作。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
const url;

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/30/002356xfxxj9pbk5pn2ixb.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面截圖的報錯已經說明了一切,這一點要注意。

三.常量指向一個物件:

這涉及到值型別與應用型別的區別,具體可以參閱JavaScript值型別和引用型別一章節。

首先看一下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var obj = {
  webName: "螞蟻部落",
  url:"www.softwhy.com"
}
const antzone = obj;
obj.address = "青島市南區";
console.log(antzone.address);

分析如下:

宣告一個物件直接量,並將此物件的引用地址賦值給變數obj。

然後宣告一個常量,並賦值為obj,也就是此常量的值是物件直接量的引用地址。

最後物件的屬性值雖然被改變,但是儲存在obj中的引用地址並沒有改變,可以形象的比喻如下:一個地址指向一個具體房子,青島市南區256號甲17號樓3單元503號,雖然裡面的主人改變了,但是這個地址並沒有發生改變,而常量的值只是儲存的這個房子地址而已,實質常量值沒有發生改變。

相關文章