自執行函數裏面的this指向的是window let,const 1.聲明的變量只在命令所在的代碼塊內有效 2.let申明的變量不會變量提高(域解析) 3,不容許在同一個做用域下聲明已經聲明的變量 4,const申明後必須賦值數據結構 set :集合,由一組無序並且惟一的項組成的,特色key跟value相同,沒有重複的value let s = new set([1,2,3]) 屬性 .size 方法 .add() 添加一個數據 .delete(value) 刪除指定數據,返回布爾值 .has(value) 判斷是否有這個值 返回布爾值 .clear() 清除全部的數據 .keys() 返回鍵名的遍歷器 .values() 返回值的遍歷器 .entries() 返回鍵值對的遍歷器 .forEach(function(value,key,set/數據自己){}) map :字典型數據結構,是用來存儲不重複的key的hash結構,不一樣set 字典使用的是【鍵,值】的形式來存儲的數據的 鍵能夠是字符串,也能夠是對象 const map = new map([ ['a',1],['b':2]]) map.set(鍵,值) 設置鍵值 map.get(鍵) 獲取鍵對應的值 map.delete(鍵) 刪除 map.has(鍵) 返回布爾值 map.clear() 清除全部的鍵值 map結構中 認爲NaN是同一個鍵iterator跟for-of 遍歷器(Iterator)是一種接口,爲各類不一樣的數據結構提供統一的訪問機制。任何數據結構只要部署Iterator接口,就能夠完成遍歷操做 for–in 用於遍歷對象的屬性。 for-of 用於遍歷數據 — 就像數組中的元素。 for-of 不單單是爲數組設計,還能夠用於類數組的對象,好比 DOM 對象的集合...擴展運算符 var str='abc'; arr=[...str] => [q,b,c]class語法 經過class關鍵字申明一個類 class Miav{ conshis.a=a; tructor(a,b){ tthis.b=b; return this } print1(){ console.log(this.a+'-'+this.b) } print2(){ console.log(this.a+'-'+this.b) } } Miav下面的constructor是構造函數,方法直接寫在構造函數後面,不須要逗號隔開,原型繼續存在,方法都在原型上,定義在類的方法不能被枚舉 繼承 extends a extends b a類繼承b類 繼承格式class A extends B { } static 若是在一個方法前, 加上static關鍵字, 就表示該方法不會被@@@@@@實例@@@@@繼承, 而是直接經過類來調用, 這就稱爲「 靜態方法」 父類的靜態方法, 能夠被子類繼承。 super() 調用父類的構造函數 沒調用super以前,子類沒有this/// super當函數只能在構造 函數constructor裏面調用 super.方法() 這裏super其實就是父類的原型對象 class B { constructor(a,b){ this.a=a; this.b=b; return this } static add(){ console.log(this) } } class A extends B { constructor(a,b,c){ super(a,b) this.c=c } addm(){ console.log(this.a+this.b+this.c) } } var a =new A(1,2,3); a.addm() a.add()symbol 表示獨一無二值 基本數據類型 null undefined number boolean string symobl 定義symbol let s1 = Symbol('key') 這個key只是描述,不會影響s1的值 symbol不能作任何運輸,判斷爲真字符串的擴展 1.模板字符串 `` ${變量} var str ='a' 2 str.repeat(2) => 'aa' 3 str.includes('a') 查找str中有沒有a 返回布爾值 4 str.endWith('a') str.startWith('a') 查找str開頭/結尾是否包含a數組擴展 Array.from() 把類數組轉換成真正的數組 Array.of() 方法用於將一組值,轉換爲數組。 arr.find() 查找數組中的符合條件的,返回第一個符合條件的,沒有找到符合條件的返回-1 arr.find(function(a){ return a>2}) arr.findIndex() 查找數組中的符合條件的,返回第一個符合條件的下標;沒找到返回undefined arr.fill(填充的值,開始位置,結束位置不包括結束位置)對象的擴展 Object.is() 判斷兩個數據是否同樣 返回布爾值 Object.is(NaN,NaN) true Object.is(+0,-0) false Object.assign(目標對象,源對象,源對象。。。。) 用於對象的合併,將源對象的全部可枚舉的屬性複製到目標對象上rest參數(...變量名) 用於獲取函數多餘的參數,rest實質是一個數組,該變量將多餘的參數放入數組中箭頭函數 格式 :函數名=(參數)=> {函數體} 體內沒有本身的this對象,使用的時候,其內部的this就是定義時候所在的環境的對象,而不是使用時所在的環境對象 沒有arguments對象 用...rest代替generator函數 生成器 普通函數 用function聲明 generator函數用 function* 聲明 在生成器函數內部,有一種相似return的語法:關鍵字yield。 兩者的區別是,普通函數只能夠return一次, 而生成器函數能夠yield屢次(固然也能夠只yield一次)。 在生成器的執行過程當中,遇到yield表達式當即暫停,後續可恢復執行狀態。async函數 函數聲明 async function foo() {} // 函數表達式 const foo = async function () {}; async表示函數裏有異步操做 await表示緊跟在後面的表達式須要等待結果。 async函數的返回值是 Promise 對象,你能夠用then方法指定下一步的操做。 async函數內部return語句返回的值,會成then爲方法回調函數的參數 async函數內部拋出錯誤,會致使返回的 Promise 對象變爲reject狀態。拋出的錯誤對象會被catch方法回調函數接收到。 await命令後面是一個 Promise 對象。若是不是,會被轉成一個當即resolve的 Promise 對象。 如 async function f() { async function f() { return await 123; ====》》 return await Promise.resolve(123); } } 只要一個await語句後面的 Promise 變爲reject,那麼整個async函數都會中斷執行。 即便前一個異步操做失敗,也不要中斷後面的異步操做。這時能夠將第一個await放在try...catch結構裏面 另外一種方法是await後面的 Promise 對象再跟一個catch方法,處理前面可能出現的錯誤。 如 async function f() { await Promise.reject('出錯了') .catch(e => console.log(e)); return await Promise.resolve('hello world'); }promise 對象traceur.js 前臺把es6編譯成es5 1.引入tranceur.js 2.引入引導程序 bootstrap.js (是引導程序不是bootstrap庫) 3.插入js <script type='module'>要寫的es6代碼</script> map 打散 reduce 彙總