JavaScript中ES6規(guī)范中l(wèi)et和const的用法和區(qū)別
ES6—— let 和 const 命令
引言
本文主要講解ES6中變量的相關(guān)操作,變量的命名, 講解 var、 let 、 const 三者的區(qū)別
正文
ES6中的 let 和 const 都是用來聲明變量的, 他們與 var 有所區(qū)別
let 命令
我們都知道在for循環(huán)中,我們命名的變量 i 一般都只是為了在這個循環(huán)中使用,才臨時命名的, 我們希望循環(huán)結(jié)束后,這個變量就消失, 但是卻相反,用 var 命名的變量,在 for 循環(huán)結(jié)束后并不會銷毀,而會存在于全局中。
for(var i=0; i<5; i++) { console.log('循環(huán)'+ i) } console.log(i)
/* 輸出結(jié)果 */
循環(huán)1
循環(huán)2
循環(huán)3
循環(huán)4
5 // 這里是循環(huán)外輸出的i
但是如果我們在 for 循環(huán)中,用到 let 去命名變量會怎么樣呢?
for(let i=0; i<5; i++) { console.log('循環(huán)'+ i) } console.log(i)
/* 輸出結(jié)果 */
循環(huán)1
循環(huán)2
循環(huán)3
循環(huán)4
undefined // 這里是循環(huán)外輸出的i,顯示未定義
這樣的話就解決了因為 var 命名導(dǎo)致的變量泄露的問題了, 其實它的本質(zhì)就是作用域, let 只作用于他自身所在的代碼塊內(nèi),而 var 是針對全局都有效的。例如這一個簡單的例子:
{ let i = 1 var n = 2 } console.log(i) console.log(n)
/* 輸出結(jié)果 */
undefined
2
可以看到, let 命名的變量只存在于那個代碼塊內(nèi),到外部就訪問不到了,而 var 就是針對全局命名的。
const 命令
const 和 let 類似,也是命名的變量只能在它所在的代碼塊內(nèi)能被訪問得到,到外部就無法被訪問到,但是 const 與 let 的區(qū)別就在于, const 命名的變量是一個只讀變量,簡而言之就是命名了就無法在后面被修改,例如這個例子:
const a = 'apple' let b = 'orange' a = 'watermelon' b = 'banana'
/* 輸出結(jié)果 */
a = 'watermelon'
^
顯而易見, 系統(tǒng)會直接報錯, 因為 const 命名的變量 a 是無法改變的, 后續(xù)無法對其進(jìn)行賦值。
其實 const 命名變量以后, 也不是說就真的無法改變了, 因為const命名時其實是把箭頭指向了內(nèi)存中的一個對象, 只要不改變這個對象地址, const 命名的變量還是可以變化的,例如:
const list1 = [] list1.push('變化1') console.log(list1) // ['變化1']
可以看到 list1.pish(' 變化1 ') 不會改變 變量 list1在內(nèi)存中的地址。
但是 list1 = [ '變化1' ] 就會改變 list1 在內(nèi)存中的地址,所以會報錯
const list1 = [] list1 = ['變化1'] console.log(list1) // 報錯:list1 = ['變化1'] ^
結(jié)束語
這就是 let 和 const 的簡單應(yīng)用,希望對大家有所幫助, 下一篇ES6(2)將講解變量的解構(gòu)賦值
到此這篇關(guān)于JavaScript中ES6規(guī)范中l(wèi)et和const的用法和區(qū)別的文章就介紹到這了,更多相關(guān)JavaScript中l(wèi)et和const用法區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript對IE操作的經(jīng)典代碼(推薦)
本篇文章主要是對JavaScript對IE操作的經(jīng)典代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03javascript實現(xiàn)的顏色塊滑動的動態(tài)效果
javascript實現(xiàn)的顏色塊滑動的動態(tài)效果...2007-08-08在JavaScript中使用inline函數(shù)的問題
在JavaScript中使用inline函數(shù)的問題...2007-03-03JavaScript Map實現(xiàn)原理與底層結(jié)構(gòu)詳解
哈希表(也稱為哈希表)是一種基于鍵直接訪問內(nèi)存存儲位置的數(shù)據(jù)結(jié)構(gòu)。也就是說,它通過計算一個鍵值函數(shù)來加速查找,該函數(shù)將要查詢的數(shù)據(jù)映射到表中的某個位置。該映射函數(shù)稱為散列函數(shù),記錄數(shù)組稱為散列表2022-09-09IE11下使用canvas.toDataURL報SecurityError錯誤的解決方法
這篇文章主要給大家介紹了關(guān)于在IE11下使用canvas.toDataURL報SecurityError錯誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對同樣遇到這個問題的朋友們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11微信小程序--獲取用戶地理位置名稱(無須用戶授權(quán))的方法
這篇文章主要介紹了微信小程序-獲取用戶地理位置名稱(無須用戶授權(quán))的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04JavaScript判斷用戶是否對表單進(jìn)行了修改的方法
這篇文章主要介紹了JavaScript判斷用戶是否對表單進(jìn)行了修改的方法,實例分析了javascript對表單操作與判定的技巧,需要的朋友可以參考下2015-03-03JS中使用mailto實現(xiàn)將用戶在網(wǎng)頁中輸入的內(nèi)容傳遞到本地郵件客戶端
這篇文章主要介紹了mailto實現(xiàn)將用戶在網(wǎng)頁中輸入的內(nèi)容傳遞到本地郵件客戶端的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-10-10