ES6 memo

1、熱門問題

  1. 介紹redux,主要解決什麼問題
      是管理應用程序狀態的庫,解決數據管理和數據通訊的問題
  2. Promise、Async有什麼區別
    1. Async 更簡潔,不須要用 then 鏈接
    2. Promise 中不能自定義使用 try/catch 進行錯誤捕獲,可是在 Async/await 中能夠像處理同步代碼處理錯誤css

    3. 調試更方便
    4. (Generator 函數能夠暫停執行和恢復執行,這是它能封裝異步任務的根本緣由)
  3. 介紹react優化
    1. 用 shouldComponentUpdate 避免資源浪費 
    2. 複雜的頁面不要在一個組件裏面寫完。
    3. 請儘可能使用const element
    4. map裏面添加key,而且key不要使用index(可變的)。具體可參考使用Perf工具研究React Key對渲染的影響
    5. 儘可能少用setTimeOut或不可控的refs、DOM操做。
    6. propsstate的數據儘量簡單明瞭,扁平化。
    7. 使用return null而不是CSS的display:none來控制節點的顯示隱藏。保證同一時間頁面的DOM節點儘量的少
  4. HTTP2.0和HTTP1.X相比的新特性
    1. 新的二進制格式,相對文原本說有更強的健壯性
    2. 多路複用(MultiPlexing),即鏈接共享。一個鏈接上能夠有多個request,一個request對應一個id 。
    3. header壓縮:HTTP1.x的header帶有大量信息,並且每次都要重複發送,HTTP2.0使用encoder來減小須要傳輸的header大小,通信雙方各自cache一份header fields表,既避免了重複header的傳輸,又減少了須要傳輸的大小。
    4. 服務端推送(server push)
  5. 經過什麼作到併發請求
    1. 對請求併發數進行限制,而且使用排隊機制讓請求有序的發送出去
  6. http1.1時如何複用tcp鏈接
    1. 使用 keep-alive
  7. 介紹service worker
      • 一個獨立的 worker 線程,獨立於當前網頁進程,有本身獨立的 worker context。html

      • 一旦被 install,就永遠存在,除非被 uninstall前端

      • 須要的時候能夠直接喚醒,不須要的時候自動睡眠(有效利用資源,此處有坑)react

      • 可編程攔截代理請求和返回,緩存文件,緩存的文件能夠被網頁進程取到(包括網絡離線狀態)css3

      • 能向客戶端推送消息編程

      • 不能直接操做 DOM,可是service worker能夠經過postMessage與頁面之間通訊,把消息通知給頁面,若是須要的話,讓頁面本身去操做DOM。redux

      • 出於安全的考慮,必須在 HTTPS 環境下才能工做數組

      • 異步實現,內部大都是經過 Promise 實現瀏覽器

  8. 三次握手
    1. 客戶端向服務器發送一個 SYN 包,請求創建鏈接
    2. 服務器收到後會發一個對SYN包的確認包(SYN/ACK)回去
    3. 客戶端發送一個確認包(ACK),通知服務器鏈接已創建
  9. 介紹css3中position:sticky
    1. 父級元素不能有任何overflow:visible覺得的overflow設置,不然沒有粘滯效果。由於改變了滾動容器(即便沒有出現滾動條)。所以,若是你的position:sticky無效,看看是否是某一個祖先元素設置了overflow:hidden,移除之便可。
    2. 同一個父容器中的sticky元素,若是定位值相等,則會重疊;若是屬於不一樣父元素,則會鳩佔鵲巢,擠開原來的元素,造成依次佔位的效果
  10. 瀏覽器事件流向
    1. 「DOM2級事件」規定事件流包括三個階段,事件捕獲階段、處於目標階段和事件冒泡階段。首先發生的事件捕獲,爲截獲事件提供了機會,而後是實際的目標接收了事件,最後一個階段是冒泡階段
    2. 注意處於目標階段的時候,既不是冒泡階段、也不是捕獲階段,事件處理程序被調用的順序是註冊的順序
  11. 介紹事件代理以及優缺點
    1. 減小事件註冊,節省內存
    2. 減小了dom節點更新的操做,處理邏輯只需在委託元素上進行
    3. 缺點:事件委託基於冒泡,對於onfoucs和onblur等事件不支持;層級過多,冒泡過程當中,可能會被某層阻止掉
  12. React組件中怎麼作事件代理
    1. React 本身實現了一套高效的事件註冊、存儲、分發和重用的邏輯,在 DOM 事件體系基礎上作了很大改進。不只減小了內存消耗,最大化解決了 IE 等瀏覽器的不兼容問題,並且簡化了事件邏輯,對開發者來講很是友好。它有以下的特色:
      • 使用事件委託技術進行事件代理,React 組件上聲明的事件最終都轉化爲 DOM 原生事件,綁定到了 document 這個 DOM 節點上。從而減小了內存開銷。
      • 自身實現了一套事件冒泡機制,以隊列形式,從觸發事件的組件向父組件回溯,調用在 JSX 中綁定的 callback。所以咱們也無法用 event.stopPropagation() 來中止事件傳播,應該使用 React 定義的 event.preventDefault()。
      • React 有一套本身的合成事件 SyntheticEvent,而不是單純的使用 DOM 原生事件,但兩者能夠平滑轉化。
      • React 使用對象池來管理合成事件對象的建立和銷燬,這樣減小了垃圾的生成和新對象內存的分配,大大提升了性能
  13. React組件事件代理的原理
  14. 前端怎麼控制管理路由

   

1、for-of

  • 與 forEach 不一樣的是,它能正確響應 break、continue、return 語句
  • 避開了 for-in 循環的缺陷,for-in 是爲普通對象設計的, 它會遍歷自定義屬性,並且你遍歷獲得的是字符串類型的鍵,所以不適用於數組遍歷
  • 支持不少類型,像數組、類數組對象、字符串、Map 和 Set 對象,但不支持普通對象(這是 for-in 的用處)

2、默認參數

  1.  定義默認值時=後的部分是一個表達式,若是調用者沒有傳遞相應參數,將使用該表達式的值做爲參數默認值
  2.  表達式在函數調用時自左向右求值,這一點與Python不一樣。這也意味着,默認表達式可使用該參數以前已經填充好的其它參數值
  3.  傳遞undefined值等效於不傳值,沒有默認值的參數隱式默認爲undefined

3、普通函數和箭頭函數的區別

  1.  箭頭函數內的this值繼承自外圍做用域
  2.  箭頭函數不會獲取它們本身的arguments對象
  3.  使用了塊語句的箭頭函數不會自動返回值,你須要使用return語句將所需值返回
  4.  當使用箭頭函數建立普通對象時,你老是須要將對象包裹在小括號裏 
相關文章
相關標籤/搜索