let與const區別
let與const都是ES2015新增,兩者具體用法參閱如下兩篇文章。
(1).let可以參閱JavaScript let 命令一章節。
(2).const可以參閱JavaScript const 命令一章節。
兩個命令有著諸多共同點,但不在本文介紹範圍之內,僅介紹一下兩者的區別。
一.宣告資料型別不同:
let命令用於宣告變數,而const用於宣告常量。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let webName = "螞蟻部落"; console.log(webName); webName="百度"; console.log(webName);
程式碼執行效果截圖如下:
let用於宣告變數,既然是變數,那麼它的值就可以改變,程式碼執行也體現了這一點。
[JavaScript] 純文字檢視 複製程式碼執行程式碼const webName = "螞蟻部落"; console.log(webName); webName="百度"; console.log(webName);
程式碼執行效果截圖如下:
上述程式碼報錯了,因為常量賦值後,它的值不能夠被改變。
二.賦值時機:
let可以宣告變數與給變數賦值分開。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let webName; webName="螞蟻部落"; console.log(webName);
程式碼執行效果截圖如下:
上面的使用方式完全沒有問題。
[JavaScript] 純文字檢視 複製程式碼執行程式碼const webName; webName="螞蟻部落"; console.log(webName);
程式碼執行效果截圖如下:
使用const宣告常量的時候必須同時賦值,否則報錯。
三.const常量值不能改變深入介紹:
不少朋友並不認同const常量值不能改變這一理論。
可能會給出如下類似的證據,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let web={ url:"http://www.softwhy.com", address:"青島市南區" } const antzone=web; web.age=6; console.log(antzone);
程式碼執行效果截圖如下:
上述程式碼中,常量antzone的值是web物件,然後我們為物件新增一個age屬性。
也就是常量的值已經被修改,但是程式碼執行完全沒有問題。
但是上面的結論是錯的,常量的值並沒有改變。
web是一個值型別資料,但是web實際儲存的內容是物件在記憶體中的地址。
圖示如下:
web實際儲存的是一個地址,此地址就是物件在堆記憶體中的實際儲存位置。
所以儘管你給物件新增了一個屬性,但是在棧記憶體中儲存的地址沒有發生改變。
又由於常量儲存的是物件地址,自然常量值沒有發生改變。
關於值型別資料可以參閱JavaScript值型別和引用型別一章節。
相關文章
- let const var 區別
- var let const區別
- let,const,var區別
- var、const、let 的區別
- es6 let const與var 的區別
- var、let和const的區別
- var和let/const的區別
- JavaScript中let、const、var 的區別JavaScript
- var、let、const宣告變數的區別變數
- JavaScript中的var、let 及 const 區別JavaScript
- JS中const、var 和let的區別JS
- let與const命令
- ES6中var,let,const的區別
- ES6中var/let/const的區別
- var與ES6中const、let宣告的變數的區別變數
- 【前端面試】(四)JavaScript var let const的區別前端面試JavaScript
- var、let和const三者有哪些區別?
- let與var的區別
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- var、let、const變數宣告的區別及特點變數
- ES5 和 ES6:let const var 區別
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- ES6中let和var和const的區別
- 深入理解ES6之var,let,const區別
- 【ES6】var、let、const三者的區別
- TypeScript let與var的區別TypeScript
- 變數和函式宣告提升,let和var const區別變數函式
- const與static的區別
- js中 let 與 var 的區別JS
- 1分鐘帶你瞭解var let 和 const 的區別
- var與let宣告變數的區別變數
- rspec中的let和let!區別
- const char*, char const*, char*const的區別
- ES6 - let與const,解構賦值賦值
- var 和 let 的區別
- ES6中的let與var的區別
- const char*, char const*, char*const 有何區別?
- ES6標準入門之---let與const