JS面試復(fù)習(xí)筆記

JavaScript復(fù)習(xí)

  • 變量

    • 類型
      • 值類型
        • typeof :值[開新空間]/引用[引用堆空間]/函數(shù)
      • 引用類型
        • 對象
          • 深拷貝Object.create()
  • 原型與原型鏈

    • class
      • 實例的隱式原型===對象的顯式原型
      • 子類的顯式原型的隱式原型===父類的顯式原型
  • 異步

    • 單線程
    • 應(yīng)用場景
      • 網(wǎng)絡(luò)請求
      • 定時任務(wù)
    • 回調(diào)函數(shù)嵌套
  • DOM

    • 樹:createElement()/appendChild()/removeChild()
    • property:JS對象/attribute:HTML
  • BOM

    • 瀏覽器類型
    • URL
    • 主要內(nèi)容:navigator/screen/location/history
      • location : href/protocol/host/search:?/hash:#/pathname
      • history: .back()/.forward()
  • ajax

    • XMLHttpRequest

    • 狀態(tài)碼:readyState:4/status:2xx/304[意義:301/2/4:永久/臨時重定向/沒跳轉(zhuǎn)用緩存]/403[沒權(quán)限]/5xx[服務(wù)端出錯]

    • 跨域

      • 同源策略

        • 瀏覽器要求網(wǎng)頁與服務(wù)器同源:協(xié)議/域名/端口一致
        • 可跨域
          • 圖片[發(fā)統(tǒng)計打點請求]/CSS/JS[CDN/JSONP]
          • 需要服務(wù)端配合
      • 解決方案

        • JSONP

          <!--index.html-->
          <script>
              window.abc=function (data){
                  console.log(data);
              }
          </script>
          <script src="非本域名/getData.js?callback=abc"></script>
          <!--以上內(nèi)容可方便地封裝成工具-->
          
          //getData.js
          callback({
              "name":zhangsan
          })
          //jsonp
          $.ajax({
              type:'POST',
              url:'域名?一些參數(shù)=value',
              contentType:"application/json;sharset=UTF-8",
              //dataType:'jsonp',
              jsonCallback:'callback',
              data:JSON.stringify(list),
              success:function (data){
                  //console.log(data);
                  //...
              },
              error:function(e){
                  console.log(e.status);
              }
          })
          
        • CORSresponse.setHeader("Access-Control-Allow-...","...");

    • 常用APIjsonp/fetch/axios

  • 存儲

    • cookieHTTP中借用來做本地存儲,與服務(wù)端通訊
    • H5localStorage/sessionStorage
      • 每個域名最大5M
      • set/getItem('name','value')
      • localStorage永久存儲
      • sessionStorage只存在當(dāng)前會話,瀏覽器關(guān)了就沒了
    • 區(qū)別:容量/API易用性/HTTP
  • 開發(fā)環(huán)境

    • git
    • git diff/show
      • git checkout -b feature
      • git stash+git checkout -b feature+git stash pop
    • webpack
    • babel
      • 模塊化
      • 生產(chǎn)-哈希
  • 運行環(huán)境

    • 性能優(yōu)化

      • 基本原則:空間換時間
        • 多用內(nèi)存、緩存等
        • 減少計算量,減少網(wǎng)絡(luò)加載
      • 怎么做?
        • 加載
          • 減少體積[壓縮代碼]
          • 減少訪問次數(shù)[合并代碼[雪碧圖]/SSR服務(wù)端渲染/緩存]
            • 緩存:hash放在文件名/不變就找自動生成的緩存/304
            • 服務(wù)端渲染:網(wǎng)頁和內(nèi)容一起加載一起渲染/vue SSR
          • CDN分發(fā)[基于地域的static靜態(tài)文件服務(wù)]
        • 渲染
          • CSS放<head>里/JS放<body>底部/JSDOMContentLoaded/懶加載
            • 懶加載:src="preview.png" real-src="real.png"滑到了再加載
          • DOM查詢緩存/要插入的DOM元素先放進document fragment/節(jié)流防抖RAF:體驗流暢
            • 防抖:輸入暫停/結(jié)束再出結(jié)果[監(jiān)聽輸入框/keyup/...]
              • 弄一個timer,有就清除定時函數(shù),沒有就干活并清空
            • 節(jié)流
              • 弄一個timer,有就返回,沒有就干活并清空
            • RAF: requestAnimationFrame(func)自動定時函數(shù)
    • 安全

      • XSS
        • 用戶輸入惡意腳本
        • 轉(zhuǎn)換特殊字符
      • XSRF
        • 跨站請求偽造
        • post請求/進行驗證
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容