es6一句話拾遺

  • 2019 年 10 月 8 日
  • 筆記
  • Symbol最大的作用就是用於消除魔術字元串;
  • Set跟數組的最大區別,就是Set的成員都是唯一的,沒有重複;(方法:add(value),has,delete,clear)
  • Map跟對象的最大區別,就是對象只能用字元串作為鍵,Map不是;(方法:get,set(key,value),has,delete,clear)
  • let和var最大的區別是,let聲明的變數是塊內有效的(塊內不允許重複聲明,塊外可以);不會變數提升(聲明之前使用);
  • 變數的解構賦值:let { a: b } = { a: 3 };//b等於3(其他你都懂,這個也很好記的哦)
  • 正則表達式i不區分大小寫,g全局搜索;/[A-Z]/匹配一個大寫字母,/(1|9)/匹配字母1或者字母9,小括弧只匹配字元,{3,9}匹配在它之前的表達式最少出現3次,最多出現9次;^$行首和行位;/x(?=y)/代表x在y之前;
  • call方法:func.call(thisObj,param1,param2); apply方法:func.apply(thisObj,param1,param2); bind方法:func.bind(thisObj,param1,param2)();
  • 遞歸調用應該注意棧溢出的問題,可以考慮尾遞歸優化,然而尾遞歸優化只在嚴格模式strict下才有效,還可以考慮蹦床函數,用無限循環替換遞歸;(別忘記跳出循環的條件)
  • Object.assign(target,source1,source2);把源對象的屬性複製到目標對象,同名屬性後面覆蓋前面的;
  • Object.keys(target);Object.values(target);Object.entries(target);//entries返回二維數組
  • Proxy是訪問對象的代理,外界對象對目標對象的訪問,必先通過代理;
  • Promise的catch方法,除了抓Promise內部的錯誤之外,還抓then回調函數的錯誤;然而如果你沒有reject,它是什麼也抓不到的;用done就可以:let result = await func1().done();然而done又沒有回調函數,finally就有 await func1().finally(cb);
  • Promise.all([p1,p2,p3,p4])與Promise.race([p1,p2,p3,p4])是成對兒的,所有都完成&只要有一個完成;參數是promise實例的數組;
  • 多個await操作如果沒有繼發關係,應該考慮使用Promise.all,讓他們同時觸發;Promise.all是不會繼發執行的;
  • Generator函數是*和yield結合,調用的時候用next(), 返回值是個對象,對象里有done屬性,還可以傳參數給next