JavaScript const 命令
常量在眾多主流程式語言中是一個普通概念。
但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);
程式碼執行效果截圖如下:
上述程式碼中宣告瞭一個常量url,在宣告的同時賦值。
但是由於常量不允許後續再修改它的值,所以程式碼會報錯。
二.常量在宣告的同時必須賦值:
首先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼let webName; webName="螞蟻部落";
上面的程式碼中,變數的宣告和賦值是分開的,但是常量中是不允許這種操作。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼const url;
程式碼執行效果截圖如下:
上面截圖的報錯已經說明了一切,這一點要注意。
三.常量指向一個物件:
這涉及到值型別與應用型別的區別,具體可以參閱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號,雖然裡面的主人改變了,但是這個地址並沒有發生改變,而常量的值只是儲存的這個房子地址而已,實質常量值沒有發生改變。
相關文章
- JavaScript ConstJavaScript
- let與const命令
- ES6 let和const命令
- When to use var vs let vs const in JavaScriptJavaScript
- JavaScript中let、const、var 的區別JavaScript
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- JavaScript中的var、let 及 const 區別JavaScript
- ES6let命令和塊級作用域和const命令
- const * and * const
- [譯] 在JavaScript中何時使用var、let及constJavaScript
- 理解let並 const在JavaScript ES6中(4)JavaScript
- 理解let並 const在JavaScript ES6中(1)JavaScript
- 理解let並 const在JavaScript ES6中(2)JavaScript
- 【前端面試】(四)JavaScript var let const的區別前端面試JavaScript
- 阮一峰的ES6---let和const命令
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- const char*, char const*, char*const 有何區別?
- Const
- 頂層const和底層const
- 現代JavaScript — ES6+中的Imports,Exports,Let,Const和PromiseJavaScriptImportExportPromise
- 現代JavaScript:ES6+ 中的 Imports,Exports,Let,Const 和 PromiseJavaScriptImportExportPromise
- 搞懂頂層const和底層const
- C++ 頂層const底層constC++
- const 使用
- C語言 關鍵字const的作用 const int* 和int *const 的區別C語言
- JavaScript設計模式(七):命令模式JavaScript設計模式
- Javascript設計模式之命令模式JavaScript設計模式
- let和const
- const和define
- 07-const
- javascript設計模式 之 6 命令模式JavaScript設計模式
- C++ 中的 const 物件與 const 成員函式C++物件函式
- SyntaxError: Unexpected keyword 'const'?Error
- 指標與const指標
- let var與const
- Const 用法總結
- const關鍵字
- const限定符