這期教程我們開始學(xué)習(xí)es6語法,這期將會(huì)對(duì)es6的大部分(最常用的)API進(jìn)行講解俊性,除了純理論的講解外還參雜了本人在工作中時(shí)機(jī)遇到的問題以及解決方案和個(gè)人理解碍论,希望大家喜歡逗宁。
客套話就不說了领斥,我們這節(jié)課的學(xué)習(xí)內(nèi)容是let和const嫉到,這兩個(gè)是es6的定義變量和常量的方法,它們和js前版本的var有什么區(qū)別呢月洛?其實(shí)主要的區(qū)別就是這兩個(gè)定義的是有塊級(jí)作用域的概念何恶,學(xué)前端的同學(xué)都知道,js之前的版本只有全局作用域和函數(shù)作用域嚼黔,在es6中引入了塊級(jí)作用域的概念细层,塊級(jí)作用域用一個(gè)非常簡(jiǎn)單的理解就是大括號(hào)({})包裹的內(nèi)部是會(huì)形成一個(gè)作用域的,也就是let和const定義的變量常量擁有塊級(jí)作用域唬涧。有了這個(gè)理論概念我們來開始學(xué)習(xí)let和const:
現(xiàn)代瀏覽器對(duì)es6的支持還是不夠的疫赎,所以我們就直接在上一期vue項(xiàng)目文件中進(jìn)行運(yùn)行es6語法,因?yàn)関ue腳手架可以自動(dòng)識(shí)別es6語法并解析成瀏覽器可識(shí)別的語法進(jìn)行頁面繪制碎节,當(dāng)然我們也可以使用gulp之類的構(gòu)建工具來實(shí)現(xiàn)es6代碼的解析處理捧搞,這里因?yàn)槭菍iT學(xué)習(xí)es6的其他的內(nèi)容可以查看本人寫的其他技術(shù)博客。以下是我在vue文件的代碼結(jié)構(gòu):
就是定義了一個(gè)函數(shù)狮荔,在頁面加載時(shí)候執(zhí)行函數(shù)胎撇,以后的代碼都寫在這個(gè)函數(shù)里面。
-
let——塊級(jí)作用域?qū)嵗?/p>
我們用let定義一個(gè)for循環(huán)的變量殖氏,當(dāng)保存執(zhí)行時(shí)候報(bào)錯(cuò)了晚树,說i是沒有定義,因?yàn)閕是for循環(huán)里面的變量受葛,塊級(jí)作用域的存在题涨,使得它在for循環(huán)外面是不能訪問到的,這也證實(shí)了es6中塊級(jí)作用域的存在总滩。
-
let——變量不能重復(fù)定義:
代碼中可以看出纲堵,我們重復(fù)用let定義了變量a,然后執(zhí)行時(shí)候直接就報(bào)錯(cuò)了闰渔,證實(shí)了let定義變量時(shí)候是不能重復(fù)定義的席函。
-
const——定義和賦值需要一起完成:
從代碼可以看出,我們先定義變量a冈涧,然后給a進(jìn)行賦值時(shí)候出錯(cuò)了茂附,因?yàn)閏onst是定義常量的方法,這個(gè)方法需要定義和賦值同時(shí)進(jìn)行才不會(huì)報(bào)錯(cuò)督弓。
-
const——賦值不可變:
我們先定義a為3.14营曼,然后再賦值為5.20時(shí)候,解析報(bào)錯(cuò)愚隧,原因是const為定義常量的方法蒂阱,常量是不能更改的。
-
const——為址賦值:
大家看到這個(gè)地方是不是有點(diǎn)蒙了,剛才不是說定義常量不能更改嗎录煤?現(xiàn)在更改了怎么還是能夠執(zhí)行成功呢鳄厌?其實(shí)const定義時(shí)候是指針賦值,也就是瀏覽器會(huì)劃分出一塊內(nèi)存來存儲(chǔ)這個(gè)值妈踊,我們現(xiàn)在寫的代碼是給a新增了一個(gè)屬性了嚎,并沒有改變其內(nèi)存位置,所以并不會(huì)報(bào)錯(cuò)廊营,這個(gè)需要重點(diǎn)理解歪泳,這是址賦值和值賦值的區(qū)別,const為址賦值露筒,內(nèi)存地址不變不報(bào)錯(cuò)夹囚。
好了,這節(jié)課就學(xué)到這里邀窃,熟悉我的朋友都知道,我的原則是只學(xué)有用的假哎,希望這節(jié)課對(duì)你也有用瞬捕,謝謝大家的觀看。