為ES7&ES7+新特性立一個(gè)Note

前言

ES6較ES5來(lái)說(shuō)可能是一個(gè)較大的版本變動(dòng),增添了很多特性或者語(yǔ)法糖雏搂,使得整個(gè)JS語(yǔ)言的使用體驗(yàn)又向前邁了一大步画饥,但是ES6(ECMAScript2015)之后,每一年都會(huì)有新的語(yǔ)言強(qiáng)化版本更新出現(xiàn),所謂的ES7等贼邓,這些變動(dòng)都沒(méi)有再像ES6那么多阶冈。加之很多新特性在正式發(fā)布之前就一定會(huì)至少有兩個(gè)成熟的實(shí)現(xiàn)支持,使得在ES6之后塑径,新增特性版本上就變得很模糊了女坑,尤其是在Node環(huán)境中,有些時(shí)候?qū)τ谝恍┬〉牡胤降男绿匦阅愣家呀?jīng)寫(xiě)了很多次了都有可能不知道用的到底是哪個(gè)版本了统舀。

我本地和開(kāi)發(fā)環(huán)境都已經(jīng)遷移和更新到了Node的最新LTS版本8.9.4對(duì)新版本的語(yǔ)法支持都做得已經(jīng)很好了匆骗,以下特性雖然歸在ES6之后的版本,但是Node已經(jīng)有了支持誉简。而對(duì)于語(yǔ)言的新語(yǔ)法特性來(lái)說(shuō)碉就,個(gè)人認(rèn)為最好的方式就是理解語(yǔ)言重要部分之外多關(guān)注語(yǔ)言,然后多積累吧闷串。所以我把這篇文章當(dāng)做是一個(gè)對(duì)ES6之后的語(yǔ)法的一些“小地方”的一個(gè)筆記瓮钥,記錄積累那些小的特性或者語(yǔ)法,當(dāng)然一些重要的地方比如說(shuō)像共享內(nèi)存原子操作等這種烹吵,感覺(jué)內(nèi)容很多的塊就不會(huì)在這里記了碉熄。

以前剛學(xué)PY的時(shí)候覺(jué)得python中的裝飾器這種這么騷氣的語(yǔ)法糖為啥JS不弄一個(gè),結(jié)果一查JS的Decorator(裝飾器)草案已經(jīng)提出了肋拔。

不管是哪一款優(yōu)秀的開(kāi)源框架還是哪一門(mén)優(yōu)秀并且開(kāi)發(fā)者使用的多的語(yǔ)言锈津,往前發(fā)展都會(huì)對(duì)其他優(yōu)秀的框架語(yǔ)言進(jìn)行借鑒,這種看似競(jìng)爭(zhēng)實(shí)則攜手發(fā)展的面貌對(duì)于開(kāi)發(fā)者來(lái)說(shuō)本身就是一份回饋也是一份督促凉蜂。

開(kāi)始

  • **表示乘方
console.log(2**3)//輸出8
  • Trailing commas(函數(shù)參數(shù)的尾逗號(hào))

之前數(shù)組的最后一個(gè)元素和對(duì)象的最后一個(gè)屬性后面都可以加逗號(hào)琼梆,現(xiàn)在函數(shù)的最后一個(gè)參數(shù)后面可以加逗號(hào)了

function f(
    a,
    b,
)
  • 數(shù)組新增了includes()方法

在之前判定數(shù)組中是否包含某個(gè)元素的方式是indexOf,返回值如果是-1則表示沒(méi)有包含,現(xiàn)在[].includes(ele)返回值為Bollean可以判斷是否包含了窿吩。

let a = [1,2,3]
a.includes(1)//返回值為true
a.includes(4)//返回值為false
  • str.padStart()str.padEnd()

字符串新增了兩個(gè)方法茎杂,參數(shù)是number,表示當(dāng)字符串的長(zhǎng)度達(dá)不到方法的參數(shù)的長(zhǎng)度時(shí)在末尾或者開(kāi)頭用空格補(bǔ)齊長(zhǎng)度

let b = 'abc'
b.padStart(5)//返回值為'  abc'
b.padEnd(5)//返回值為'abc  '
  • 對(duì)象的Rest&Spread

對(duì)于數(shù)組的REST和Spread已經(jīng)是經(jīng)常用的了爆存,對(duì)于對(duì)象的屬性的Rest和Spread與之類(lèi)似


let {x,y,...z}={x:1,y:2,z:3,d:4}
console.log(x)//1
console.log(z)//輸出{ z: 3, d: 4 }

let n = {x,y,...z}
console.log(n)//輸出{x:1,y:2,z:3,d:4}
  • Object.values(obj)Object.entries(obj)

在ES5引入了遍歷對(duì)象key的方法Object.keys(obj)之后再ES8新增了新的對(duì)應(yīng)遍歷對(duì)象值的方法蛉顽。三者的返回值都是數(shù)組。

Object.values(obj)返回的是對(duì)應(yīng)的value數(shù)組

let obj = {a:1,b:2}
Object.values(obj)//輸出[ 1, 2 ]
for (let value of Object.values(obj)) {
  console.log(value); // 1, 2
}

Object.entries(obj)返回的是有每一對(duì)鍵值對(duì)數(shù)組組成的數(shù)組先较。

let obj = {a:1,b:2}
Object.entries(obj)//輸出[ [ 'a', 1 ], [ 'b', 2 ] ]
for (let [key, value] of Object.entries(obj)) {
  console.log([key, value]); // ['a', 1], ['b', 2]
}
  • Object.getOwnPropertyDescriptors(obj)獲取屬性信息

由之前的Object.getOwnPropertyDescriptor(obj,'propName')而來(lái)返回的是對(duì)象所有屬性的描述信息,返回值是一個(gè)對(duì)象携冤。

let a = {x:1,y:1,z:2}
Object.getOwnPropertyDescriptors(a)
||輸出值
\/
{ x: { value: 1, writable: true, enumerable: true, configurable: true },
  y: { value: 1, writable: true, enumerable: true, configurable: true },
  z: { value: 2, writable: true, enumerable: true, configurable: true } }
====================================================  
Object.getOwnPropertyDescriptors(a,'x')
||輸出值
\/
{ value: 1, writable: true, enumerable: true, configurable: true }

補(bǔ)充:
ES5開(kāi)始對(duì)象的屬性都具備了屬性描述符

Object.defineProperty定義對(duì)象屬性

    Object.defineProperty( myObject, "a", {
        value: 2,
            writable: true, 
            configurable: true, 
            enumerable: true
         } );

說(shuō)明:

  1. writable:是否可寫(xiě);即值是不是能被set變闲勺,嚴(yán)格模式下修改writable:false的屬性值是會(huì)拋出錯(cuò)誤

  2. Configurable是否可用Object.defineProperty來(lái)配置曾棕,改為false之后則不管是不是嚴(yán)格模式下在想來(lái)修改屬性描述都會(huì)拋出錯(cuò)誤,并且被修改為不可配置的這個(gè)屬性不能用delete myObject.a 這種方式刪掉

  3. Enumerable控制的是屬性是否會(huì)出現(xiàn)在對(duì)象的屬性枚舉中菜循,比如for..in 循環(huán)(但是可以通過(guò) in 操作符來(lái)判斷是否存在)翘地,“可枚舉”相當(dāng)于“可以出現(xiàn)在對(duì)象的屬性遍歷中”判斷是否可枚舉myObject.propertyIsEnumerable( "a" );

  4. 關(guān)于in 和 obj.hasOwnProperty()

in 操作符會(huì)檢查屬性是否在對(duì)象及其 Prototype 原型鏈中。相比之下, hasOwnProperty(..) 只會(huì)檢查屬性是否在 myObject 對(duì)象中衙耕,不會(huì)檢查 Prototype 鏈昧穿。

  • Async&Await

異步的“終極解決方案”,已經(jīng)是很常用的東西了橙喘,在這里就不過(guò)多介紹了时鸵。

由于Node的主場(chǎng)景(網(wǎng)絡(luò)IO和文件IO)和JS的語(yǔ)言特性,異步的處理一直都是一個(gè)很大的一塊厅瞎,所以關(guān)于異步的總結(jié)我會(huì)盡快梳理成一篇完整的博客饰潜。

后續(xù)

后續(xù)會(huì)有更新和補(bǔ)充。

關(guān)于學(xué)習(xí)和簸,語(yǔ)法這種事情最好的方式就是自己多有意識(shí)的多用幾次彭雾,這樣遇到符合使用場(chǎng)景的時(shí)候就會(huì)可以想到,哪怕細(xì)節(jié)記得不清了也可以很快解決锁保。由于平時(shí)主要在Node端寫(xiě)代碼所以測(cè)試語(yǔ)法最快的方式就是在node REPL中敲一遍薯酝,加深了印象也得到了結(jié)果,當(dāng)然有一個(gè)方便查看的表也是很重要的ECMAScript compatibility table

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末身诺,一起剝皮案震驚了整個(gè)濱河市蜜托,隨后出現(xiàn)的幾起案子抄囚,更是在濱河造成了極大的恐慌霉赡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幔托,死亡現(xiàn)場(chǎng)離奇詭異穴亏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)重挑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)嗓化,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谬哀,你說(shuō)我怎么就攤上這事刺覆。” “怎么了史煎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵谦屑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我篇梭,道長(zhǎng)氢橙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任恬偷,我火速辦了婚禮悍手,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己坦康,他們只是感情好竣付,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著滞欠,像睡著了一般卑笨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仑撞,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天赤兴,我揣著相機(jī)與錄音,去河邊找鬼隧哮。 笑死桶良,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沮翔。 我是一名探鬼主播陨帆,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼采蚀!你這毒婦竟也來(lái)了疲牵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤榆鼠,失蹤者是張志新(化名)和其女友劉穎纲爸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妆够,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡识啦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了神妹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颓哮。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸵荠,靈堂內(nèi)的尸體忽然破棺而出冕茅,到底是詐尸還是另有隱情,我是刑警寧澤蛹找,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布姨伤,位于F島的核電站,受9級(jí)特大地震影響熄赡,放射性物質(zhì)發(fā)生泄漏姜挺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一彼硫、第九天 我趴在偏房一處隱蔽的房頂上張望炊豪。 院中可真熱鬧凌箕,春花似錦、人聲如沸词渤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缺虐。三九已至芜壁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間高氮,已是汗流浹背慧妄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剪芍,地道東北人塞淹。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像罪裹,于是被迫代替她去往敵國(guó)和親饱普。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line)状共,也就是一...
    悟名先生閱讀 4,149評(píng)論 0 13
  • 今天套耕,注冊(cè)簡(jiǎn)書(shū)。
    yxtxjhh閱讀 120評(píng)論 0 1
  • 路峡继,風(fēng)塵仆仆像剛干完地里的農(nóng)活走了好遠(yuǎn)的路急著回家做飯的母親 小時(shí)候的路冯袍,溫暖而急切地向前蜿蜒她的身上,灑滿了童年...
    郭安安閱讀 290評(píng)論 23 14
  • 「你會(huì)嗎鬓椭?」「不會(huì)颠猴,但我可以學(xué)关划⌒∪荆」「你知道的吧?」「不知道贮折,但我可以 google. 」百分之九十九的問(wèn)題可以用這...
    戰(zhàn)敭閱讀 195評(píng)論 0 0