es6一句話拾遺

  • 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
相關文章
相關標籤/搜索