ES6學(xué)習(xí)筆記

1.JavaScript包含3個(gè)部分捏浊,分別是ECMAScript、DOM和BOM撞叨。

ES5是ECMAScript的第5個(gè)版本金踪,ES6是第6個(gè)版本。

ECMAScript是核心谒所,它規(guī)定了語(yǔ)言的語(yǔ)法热康、類型沛申、關(guān)鍵字劣领、保留字、操作符铁材、語(yǔ)句尖淘、對(duì)象;DOM文檔對(duì)象模型著觉;BOM是瀏覽器對(duì)象模型

2.ES5在以前的版本上增加了一些Array方法村生、Object方法、strict模式等饼丘;而ES6又在向下兼容的條件下新增了一些屬性方法趁桃。因此ES6相對(duì)于ES5具有一些特性:

塊級(jí)作用域,let關(guān)鍵字肄鸽,const常量卫病,賦值結(jié)構(gòu),字符串模板生成器等等

3.ES6教程:https://www.runoob.com/w3cnote/es6-tutorial.html

教程講得非常詳細(xì)典徘,下面這張圖做出來(lái)概述


圖片來(lái)自菜鳥(niǎo)教程

ES6的詳細(xì)學(xué)習(xí)(關(guān)于ES6進(jìn)行具體的學(xué)習(xí)蟀苛,筆記記錄在下方)

1.let和const
let和const是在ES6中新增的兩個(gè)關(guān)鍵字。let限定了變量只在代碼塊內(nèi)使用逮诲,不會(huì)進(jìn)行變量提升(而var會(huì)有變量提升)帜平;const定義靜態(tài)變量,使用const定義變量必須進(jìn)行賦值梅鹦,且靜態(tài)變量不允許對(duì)其進(jìn)行改變裆甩。
let使用在計(jì)數(shù)器中效果會(huì)很好:這里面使用let的循環(huán),每次輸出的j都是不同的變量

for (var i = 0; i < 10; i++) {
  setTimeout(function(){
    console.log(i);
  })
}
// 輸出十個(gè) 10
for (let j = 0; j < 10; j++) {
  setTimeout(function(){
    console.log(j);
  })
}
// 輸出 0123456789

ReferenceError: 參數(shù)錯(cuò)誤齐唆,沒(méi)有定義該變量
undefined:沒(méi)有給變量賦值就使用嗤栓,但是該變量已經(jīng)存在
SyntaxError: 語(yǔ)法錯(cuò)誤,如使用const定義變量卻不對(duì)它賦值
2.解構(gòu)賦值
剩余運(yùn)算符:

//數(shù)組模型的解構(gòu)
let [a, ...b] = [1, 2, 3];
//a = 1
//b = [2, 3]

//對(duì)象模型的解構(gòu)
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10
// b = 20
// rest = {c: 30, d: 40}

3.數(shù)據(jù)類型Symbol
在ES6中新增了數(shù)據(jù)類型Symbol蝶念,其用途有如下幾點(diǎn):
·作為對(duì)象的屬性名抛腕,可以保證屬性名不重復(fù)
·定義常量芋绸,保證常量是獨(dú)特的
·Symbol.for()類似于單例模式
·Symbol.keyFor()返回一個(gè)已經(jīng)登記的Symbol類型值得key
相同參數(shù) Symbol() 返回的值不相等

let sy = Symbol("KK");
console.log(sy);   // Symbol(KK)
typeof(sy);        // "symbol"
 
// 相同參數(shù) Symbol() 返回的值不相等
let sy1 = Symbol("kk"); 
sy === sy1;       // false

4.關(guān)于set和Map
set對(duì)象存儲(chǔ)的值總是唯一的
5.Proxy和Reflect
ES6中定義了Proxy和Reflect對(duì)API進(jìn)行一些操作〉5校基本方法和實(shí)例方法有點(diǎn)多摔敛,這里不做詳細(xì)的記錄,用到的時(shí)候去具體搞清楚全封。
6.ES6字符串
ES6中擴(kuò)展了對(duì)字符串的處理方法马昙,如判斷是否包含子串,以前用indexOf(),ES6中有:

includes()
startsWith()
endWith()
//重復(fù)字符串
repeat()
//字符串補(bǔ)全
padStart()
padEnd()
//模板字符串刹悴,反引號(hào)'   可以用來(lái)定義多行字符串的
let string1 =  `Hey,
can you stop angry now?`;
console.log(string1);
// Hey,
// can you stop angry now?

//字符串插入變量和表達(dá)式$(),變量名寫(xiě)在 ${} 中行楞,${} 中可以放入 JavaScript 表達(dá)式。
//...

7.字符串?dāng)?shù)值
ES6在Math對(duì)象上新增了17個(gè)數(shù)學(xué)靜態(tài)方法土匀,這些方法通過(guò)Math調(diào)用子房;
......
8.ES6對(duì)象
對(duì)象字面量:允許對(duì)象屬性直接寫(xiě)變量;函數(shù)名簡(jiǎn)寫(xiě)等
對(duì)象拓展運(yùn)算符:拷貝對(duì)象的所有可遍歷的屬性就轧;合并兩個(gè)對(duì)象证杭。需要注意的是,當(dāng)拓展對(duì)象中和現(xiàn)有的對(duì)象有相同屬性時(shí)妒御,后面的會(huì)覆蓋前面的

let person = {name: "Amy", age: 15};
let someone = { ...person, name: "Mike", age: 17};
someone;  //{name: "Mike", age: 17}

對(duì)象的新方法:

//復(fù)制源對(duì)象的所有可枚舉對(duì)象
Object.assign(target, source_1, ···)
//比較兩個(gè)值是否嚴(yán)格相等
Object.is(value1, value2)

9.ES6數(shù)組
包含一些數(shù)組的操作方法解愤,如數(shù)組的創(chuàng)建、遍歷乎莉、包含送讲、數(shù)組緩沖區(qū)、定型數(shù)組等
10.ES6函數(shù)
在參數(shù)和箭頭函數(shù)方面做了擴(kuò)展惋啃。例如可以定義不定長(zhǎng)度的參數(shù)哼鬓,在回調(diào)函數(shù)中使用箭頭函數(shù)可以解決使用this的問(wèn)題(具體的問(wèn)題,還有使用的注意點(diǎn)要看一下教程肥橙,教程中很清晰)
11.迭代器
迭代器是ES6中引入的遍歷機(jī)制魄宏,可以通過(guò)Symbol.itertor創(chuàng)建迭代器進(jìn)行遍歷。
12.class類
13.ES6模塊
基本的用法:

/*-----export [test.js]-----*/
let myName = "Tom";
export { myName as exportName }
 
/*-----import [xxx.js]-----*/
import { exportName } from "./test.js";
console.log(exportName);// Tom

export defualt命令:

var a = "My name is Tom!";
export default a; // 僅有一個(gè)
export default var c = "error"; 
// error存筏,default 已經(jīng)是對(duì)應(yīng)的導(dǎo)出變量宠互,不能跟著變量聲明語(yǔ)句
 
import b from "./xxx.js"; // 不需要加{}, 使用任意變量接收

14.ES6 Promise對(duì)象
Promise是一個(gè)對(duì)象椭坚,用來(lái)進(jìn)行異步編程予跌。Promise有三個(gè)狀態(tài),分別是pending(正在進(jìn)行)善茎,fulfilled(成功)券册,rejected(失敗);Promise的狀態(tài)只能由pending轉(zhuǎn)向fulfilled或者rejected烁焙。fulfilled和rejected都是屬于resolved狀態(tài)航邢。
15.Generator函數(shù)
該函數(shù)可以通過(guò)關(guān)鍵字yeild將函數(shù)執(zhí)行流掛起,以實(shí)現(xiàn)異步操作骄蝇。
在函數(shù)名前面加上*表示該函數(shù)是Generator函數(shù)膳殷,在函數(shù)內(nèi)部使用yeild關(guān)鍵字來(lái)定義函數(shù)內(nèi)部的狀態(tài)對(duì)象。
通過(guò).next()方法遍歷對(duì)象九火,當(dāng)next()方法不傳入?yún)?shù)的時(shí)候赚窃,yeild表達(dá)式的返回值是undefiend,當(dāng)next()方法有傳入?yún)?shù)時(shí)岔激,該參數(shù)會(huì)作為上一步y(tǒng)eild的返回值勒极。具體的例子如下:

function* sendParameter(){
    console.log("strat");
    var x = yield '2';
    console.log("one:" + x);
    var y = yield '3';
    console.log("two:" + y);
    console.log("total:" + (x + y));
}

var sendp1 = sendParameter();
sendp1.next();
// strat
// {value: "2", done: false}
sendp1.next();
// one:undefined
// {value: "3", done: false}
sendp1.next();
// two:undefined
// total:NaN
// {value: undefined, done: true}
next傳參
var sendp2 = sendParameter();
sendp2.next(10);
// strat
// {value: "2", done: false}
sendp2.next(20);
// one:20
// {value: "3", done: false}
sendp2.next(30);
// two:30
// total:50
// {value: undefined, done: true}

16.async函數(shù)
async是ES7才有的,與Promise和Generator有很大關(guān)聯(lián)虑鼎。
async函數(shù)返回一個(gè)Promise對(duì)象辱匿,可以通過(guò)then添加回調(diào)函數(shù);
async函數(shù)執(zhí)行時(shí)可能會(huì)遇到await表達(dá)式震叙,這時(shí)會(huì)將觸發(fā)的異步操作執(zhí)行完畢之后再繼續(xù)執(zhí)行async函數(shù)掀鹅;
await關(guān)鍵字在async函數(shù)內(nèi)部有效,外部會(huì)報(bào)語(yǔ)法錯(cuò)誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媒楼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戚丸,更是在濱河造成了極大的恐慌划址,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件限府,死亡現(xiàn)場(chǎng)離奇詭異夺颤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)胁勺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)世澜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人署穗,你說(shuō)我怎么就攤上這事寥裂。” “怎么了案疲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵封恰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我褐啡,道長(zhǎng)诺舔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮低飒,結(jié)果婚禮上许昨,老公的妹妹穿的比我還像新娘。我一直安慰自己褥赊,他們只是感情好车要,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著崭倘,像睡著了一般翼岁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上司光,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天琅坡,我揣著相機(jī)與錄音,去河邊找鬼残家。 笑死榆俺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坞淮。 我是一名探鬼主播茴晋,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼回窘!你這毒婦竟也來(lái)了诺擅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啡直,失蹤者是張志新(化名)和其女友劉穎烁涌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酒觅,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撮执,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舷丹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抒钱。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颜凯,靈堂內(nèi)的尸體忽然破棺而出谋币,到底是詐尸還是另有隱情,我是刑警寧澤装获,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布瑞信,位于F島的核電站,受9級(jí)特大地震影響穴豫,放射性物質(zhì)發(fā)生泄漏凡简。R本人自食惡果不足惜逼友,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秤涩。 院中可真熱鬧帜乞,春花似錦、人聲如沸筐眷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匀谣。三九已至照棋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間武翎,已是汗流浹背烈炭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宝恶,地道東北人符隙。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像垫毙,于是被迫代替她去往敵國(guó)和親霹疫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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