一、let和const
const和let的異同點(diǎn)
相同點(diǎn):const和let都是在當(dāng)前塊內(nèi)有效,執(zhí)行到塊外會(huì)被銷毀匆赃,也不存在變量提升(TDZ),不能重復(fù)聲明克滴。
不同點(diǎn):const不能再賦值雄卷,let聲明的變量可以重復(fù)賦值。
const實(shí)際上保證的郭蕉,并不是變量的值不得改動(dòng)疼邀,而是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng)。對(duì)于簡(jiǎn)單類型的數(shù)據(jù)(數(shù)值召锈、字符串旁振、布爾值),值就保存在變量指向的那個(gè)內(nèi)存地址涨岁,因此等同于常量拐袜。但對(duì)于復(fù)合類型的數(shù)據(jù)(主要是對(duì)象和數(shù)組),變量指向的內(nèi)存地址卵惦,保存的只是一個(gè)指向?qū)嶋H數(shù)據(jù)的指針阻肿,const只能保證這個(gè)指針是固定的(即總是指向另一個(gè)固定的地址),至于它指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的沮尿,就完全不能控制了丛塌。因此,將一個(gè)對(duì)象聲明為常量必須非常小心畜疾。
ES6 以前赴邻,我們知道5種基本數(shù)據(jù)類型分別是Undefined,Null啡捶,Boolean姥敛,Number以及String,然后加上一種引用類型Object構(gòu)成了JavaScript中所有的數(shù)據(jù)類型瞎暑,但是ES6出來(lái)之后彤敛,新增了一種數(shù)據(jù)類型,名叫symbol了赌,像它的名字表露的一樣墨榄,意味著獨(dú)一無(wú)二,意思是每個(gè) Symbol類型都是獨(dú)一無(wú)二的勿她,不與其它 Symbol 重復(fù)袄秩。
可以通過(guò)調(diào)用 Symbol() 方法將創(chuàng)建一個(gè)新的 Symbol 類型的值,這個(gè)值獨(dú)一無(wú)二,不與任何值相等之剧。
二郭卫、字符串
1、模板字符串
字符串是JavaScript中基本類型之一背稼,應(yīng)該算是除了對(duì)象之外是使用最為頻繁的類型吧贰军,字符串中包含了例如substr,replace雇庙,indexOf,slice等等諸多方法谓形,ES6引入了模板字符串的特性,用反引號(hào)來(lái)表示疆前,可以表示多行字符串以及做到文本插值(利用模板占位符)寒跳。
可以用${}來(lái)表示模板占位符,可以將你已經(jīng)定義好的變量傳進(jìn)括弧中竹椒,例如:
includes(str, index):如果在字符串中檢測(cè)到指定文本童太,返回true,否則false胸完。
startsWith(str, index):如果在字符串起始部分檢測(cè)到指定文本书释,返回true,否則返回false赊窥。
endsWith(str, index):如果在字符串的結(jié)束部分檢測(cè)到指定文本爆惧,返回true,否則返回false锨能。
indexOf(str,index) 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置扯再。(es5中方法)
如果你只是需要匹配字符串中是否包含某子字符串,那么推薦使用新增的方法址遇,如果需要找到匹配字符串的位置熄阻,使用indexOf()。
三倔约、函數(shù)
在ES5中秃殉,我們給函數(shù)傳參數(shù),然后在函數(shù)體內(nèi)設(shè)置默認(rèn)值浸剩,如下面這種方式钾军。
在ES6中,我們使用新的默認(rèn)值寫(xiě)法
四绢要、箭頭函數(shù)(=>)
1巧颈、箭頭函數(shù)的左邊表示輸入的參數(shù),右邊表示輸出的結(jié)果袖扛。
2、在箭頭函數(shù)中,this屬于詞法作用域蛆封,直接由上下文確定唇礁,對(duì)于普通函數(shù)中指向不定的this,箭頭函數(shù)中處理this無(wú)疑更加簡(jiǎn)單惨篱,如下:
3盏筐、箭頭函數(shù)中沒(méi)有arguments(我們可以用rest參數(shù)替代),也沒(méi)有原型,也不能使用new 關(guān)鍵字砸讳,例如:
4琢融、箭頭函數(shù)給數(shù)組排序
5、尾調(diào)用優(yōu)化
尾調(diào)用是指在函數(shù)return的時(shí)候調(diào)用一個(gè)新的函數(shù)簿寂,由于尾調(diào)用的實(shí)現(xiàn)需要存儲(chǔ)到內(nèi)存中漾抬,在一個(gè)循環(huán)體中,如果存在函數(shù)的尾調(diào)用常遂,你的內(nèi)存可能爆滿或溢出纳令。ES6中,引擎會(huì)幫你做好尾調(diào)用的優(yōu)化工作克胳,你不需要自己優(yōu)化平绩,但需要滿足下面3個(gè)要求:
? ?1、函數(shù)不是閉包漠另;2捏雌、尾調(diào)用是函數(shù)最后一條語(yǔ)句;3笆搓、尾調(diào)用結(jié)果作為函數(shù)返回
尾調(diào)用實(shí)際用途——遞歸函數(shù)優(yōu)化:在ES5時(shí)代性湿,我們不推薦使用遞歸,因?yàn)檫f歸會(huì)影響性能砚作。但是有了尾調(diào)用優(yōu)化之后窘奏,遞歸函數(shù)的性能有了提升。
未完待續(xù)~~~~
轉(zhuǎn)自??https://segmentfault.com/a/1190000016068235?share_user=1030000006821344