ECMAScript是一種由Ecma國際(前身爲歐洲計算機制造商協會,英文名稱是European Computer Manufacturers Association)經過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用普遍,它每每被稱爲JavaScript或JScript,因此它能夠理解爲是JavaScript的一個標準,但實際上後二者是ECMA-262標準(ES標準)的實現和擴展。html
JavaScript:一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML網頁上使用,用來給HTML網頁增長動態功能。前端
JavaScript由ECMAScript、DOM、BOM三部分組成,以下圖:es6
ECMAScript:描述了該語言的語法和基本對象。算法
DOM:文檔對象模型(DOM),描述處理網頁內容的方法和接口,好比:document。數組
BOM:瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和接口,好比:navigator、history、screen、location、window。瀏覽器
let 聲明的變量具備塊做用域的特徵。bash
在同一個塊級做用域,不能重複聲明變量。微信
let 聲明的變量不存在變量提高,換一種說法,就是 let 聲明存在暫時性死區(TDZ)。app
const 聲明方式,除了具備 let 的上述特色外,其還具有一個特色,即 const 定義的變量,一旦定義後,就不能修改,即 const 聲明的爲常量。函數
模板字符串至關於增強版的字符串,用反引號(`) 標識。它能夠看成普通普通字符串使用,也能夠用來定義多行字符串,或者在字符串中嵌入變量或表達式。
模板字符串中嵌入變量,須要將變量名寫在 ${ } 中。
全部模板字符串的空格和換行,都是被保留的。
模板字符串的大括號內部,就是執行Javascript代碼。
支持嵌套。
對象解構的語法形式是在一個賦值操做左邊放置一個對象字面量,如:
一樣能夠在給變量賦值時使用解構語法,以下,在定義變量以後想要修改他們的值,能夠這樣:
使用解構賦值表達式時,若是指定的局部變量名稱在對象中不存在,那麼這個局部變量會被賦值爲undefined,以下:
當指定的屬性不存在時,能夠隨意定義一個默認值,在屬性名稱後添加一個等號(=)和相應的默認值便可:
若是你但願使用不一樣命名的局部變量來存儲對象屬性的值,ES6中的一個擴展語法能夠知足:
與對象解構的語法相比,數組解構就簡單多了,它使用的是數組字面量,且解構操做所有在數組內完成,而不是像對象字面量語法同樣使用對象的命名屬性:
數組解構也可用於賦值上下文,但不須要用小括號包裹表達式,這一點與對象解構的約定不一樣。
複製代碼
複製代碼
能夠混合使用對象解構和數組解構來建立更多複雜的表達式,如此一來,能夠從任何混雜着對象和數組的數據解構中提取你想要的信息:
複製代碼
擴展運算符用三個點號表示,功能是把數組或類數組對象展開成一系列用逗號隔開的值。
拆分數組
複製代碼
複製代碼
數組深拷貝
複製代碼
複製代碼
數組合並
複製代碼
複製代碼
字符串轉數組
複製代碼
複製代碼
rest運算符也是三個點號,不過其功能與擴展運算符剛好相反,把逗號隔開的值序列組合成一個數組。
直接合併成數組
複製代碼
複製代碼
部分合併成數組
複製代碼
複製代碼
利用解構來合成數組
複製代碼
複製代碼
不綁定this
不能夠做爲構造函數來使用
複製代碼
不綁定arguments(若是有要使用arguments的時候可使用rest參數代替)
複製代碼
不可使用yield命令,所以箭頭函數不能用做Generator函數
擴展運算符是對具備Iterator 接口的對象,均可以使用擴展運算符。
用於將兩類對象轉化爲真正的數組 1.相似數組的對象(只要據有length屬性, 均可以被轉化爲數組) 2.可遍歷(iterable)的對象。
複製代碼
將一組值轉化爲數組。
複製代碼
find方法,用於找出第一個符合條件的數組成員,沒有找到會返回undefiend,findIndex方法返回的是第一個符合條件成員的位置, 若是找不到返回-1, find和findIndex均可以接受第二個參數,用來綁定回調函數的this。
複製代碼
複製代碼
fill方法使用給定值,填充一個數組。用於初始化數組值,接受第二個和第三個參數,用於指定開始和結束位置。
複製代碼
數組實例的方法entries() keys()和values()複製代碼
這三個方法提供新的方法,用於遍歷數組, 都返回一個遍歷器對象,能夠用for..of循環進行遍歷,keys是對鍵名的遍歷,values是對鍵值的遍歷,entries是對鍵值對的遍歷。
複製代碼
表示某個數組是否包含給定的值, 是則返回true,不然返回false。
複製代碼
es6容許直接寫入變量和函數,做爲對象的屬性和方法。主要使用:1.函數返回值;2. module.exports導出;3. 屬性的setter和getter。
複製代碼
複製代碼
es6一共5種方法能夠遍歷對象的屬性。
for..in: 循環遍歷對象自身和繼承的可枚舉變量 (不含Symbol屬性)
Object.keys(obj): 返回一個數組,包含對象自身全部可枚舉屬性的鍵名
Object.getOwnPropertyNames(obj): 返回一個數組,包含對象自身的全部屬性的鍵名
Object.getOwnPropertySymbols(obj): 返回一個數組,包含自身全部的symbol屬性的鍵名
Reflect.ownKeys(): 返回一個數組,包含對象自身的全部鍵名,無論鍵名是 Symbol 或字符串,也不論是否可枚舉
js中this的關鍵字老是指向函數所在的當前對象,es6新增了另外一個相似的關鍵字super,指向當前對象的原型對象,super只能用在對象的方法中,並且是方法的簡寫屬性。
複製代碼
Object.is():同值相等的算法, 用來比較兩個值嚴格相等
Object.assign(target, source):對象的合併,將原對象全部的可枚舉屬性,複製到目標對象上
js語言對象繼承是經過原型鏈實現的,ES6提供了更多的原型鏈方法 __proto__屬性,Object.getPrototypeOf() 獲取原型prototype屬性 Object.setPrototypeOf(obj, proto), Object.create() 設置原型屬性。
https://blog.csdn.net/pan_junbiao/article/details/90316255
https://blog.csdn.net/qq_30216191/article/details/81042842
https://blog.csdn.net/weixin_43482353/article/details/100623408
https://blog.csdn.net/DFF1993/article/details/82951227
https://www.cnblogs.com/jin-zhe/p/10034259.html
https://www.cnblogs.com/innooo/p/10442911.html
https://www.cnblogs.com/kuishen/p/11113189.html