前端常見問題(三)- js

Wrightlt發表於2019-07-04
  • 資料型別有哪些
    • 值型別(基本型別):字串(String)、數字(Number)、布林(Boolean)、對空(Null)、未定義(Undefined)、Symbol。
    • 引用資料型別:物件(Object)、陣列(Array)、函式(Function)。
    • 注:Symbol 是 ES6 引入了一種新的原始資料型別,表示獨一無二的值。

引用資料型別:物件(Object)、陣列(Array)、函式(Function)。

注:Symbol 是 ES6 引入了一種新的原始資料型別,表示獨一無二的值。

  • 什麼是閉包,為什麼要用閉包

    • 閉包就是能夠讀取其他函式內部變數的函式
    • 由於在js中只有函式內部的子函式才能讀取區域性變數,因此可以把閉包簡單理解成“定義在一個函式內部的函式” 所以,在本質上,閉包就是將函式內部和函式外部連線起來的一座橋樑
    • 好處1: 讀取函式內部的變數
    • 好處2: 讓這些變數的值始終保持子記憶體中,重用變數又不造成全域性汙染
  • this

    • 為什麼要用this:
      • this提供了一種更優雅的方式來隱式“傳遞”一個物件引用,因此可以將API設計得更加簡潔且易於複用。隨著程式碼使用模式越來越複雜,顯式傳遞上下文會讓程式碼變得越來越混亂,使用this則不會這樣,因為使用this的話函式就可以自動引用合適的上下文物件!
    • this到底是什麼:
      • 當一個函式被呼叫時,會建立一個活動記錄(有時候也稱執行上下文)。這個記錄會包含函式在哪裡被呼叫(呼叫棧)、函式的呼叫方式、傳入的引數等資訊。this就是這個記錄的一個屬性,會在函式執行的過程中用到。
    • this有哪些繫結規則:
      • 1 預設繫結
      • 2 隱式繫結
      • 3 顯式繫結
      • 4 new繫結
    • 優先順序: 4 > 3 > 2 > 1
    • 繫結例外:
      • 被忽略的this(null、undefined)
      • 間接引用(賦值)
      • 箭頭函式:不使用1-4的繫結規則,根據此法作用域決定this,即箭頭函式會繼承外層函式的this繫結(無論this繫結到的是什麼)
  • 原型 | import | require

  • new一個物件的時候具體發生了什麼

  • 同步非同步

  • js對陣列的增刪改查 | localStorage | cookie

  • get 與post 的區別

  • 原生js怎樣阻止冒泡事件

  • ES5 ES6去重

  • var a = 3;a = 3的區別

  •     var a = Object();
        a.value = 1;
        b=a;
        b.value=2;
        console.log(a.value); // 2
    複製程式碼
  • 原生js怎樣阻止冒泡事件

    屬性或事件名 說明 相容性
    cancelable屬性 cancelable 事件返回一個布林值。如果用 preventDefault() 方法可以取消與事件關聯的預設動作,則為 true,否則為 fasle IE不支援
    returnValue屬性 如果設定了該屬性,它的值比事件控制程式碼的返回值優先順序高。把這個屬性設定為 fasle,可以取消發生事件的源元素的預設動作。 只支援IE
    bubbles屬性 bubbles 事件屬性返回一個布林值,如果事件是起泡型別,則返回 true,否則返回 fasle。 IE不支援
    stopPropagation方法 不再派發事件。終止事件在傳播過程中的捕獲、目標處理或起泡階段的進一步傳播。呼叫該方法後,該節點上處理該事件的處理程式將被呼叫,事件不再被分派到其他節點。 -
    preventDefault方法 取消事件的預設動作。注意,如果 Event 物件的 cancelable 屬性是 fasle,那麼就沒有預設動作,或者不能阻止預設動作。無論哪種情況,呼叫該方法都沒有作用。 -
  • post get請求的區別

    專案 get post
    後退按鈕/重新整理 無害 資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)
    快取 能被快取 不能快取
    歷史 引數會保留在瀏覽器歷史記錄中 引數不會保留在瀏覽器歷史記錄中
    對資料長度的限制 有限制。當傳送資料時,GET 方法向 URL 新增資料;URL 的長度是受限制的(URL 的最大長度是 2048 個字元)。 無限制
    對資料型別的限制 只允許ASCII字元 沒有限制,也允許二進位制資料
    安全性 安全性很低,傳送的資料是url的一部分 安全性較高,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中
    資料可見性 資料在url中對所有人可見 資料不會顯示在url中
  • js對陣列的增刪改操作

    • 建立:var arr = new Array()
    • 增加:
        arr[0] = '0';
        arr[1] = '1';
      複製程式碼
    • 修改:
        arr[0] = 'test';
      複製程式碼
    • 刪除:
        arrayObject.splice(index,howmany,item1,.....,itemX)
      複製程式碼
    • 常用陣列操作

相關文章