JS基礎面試題

2021-10-17 21:23:28 字數 1860 閱讀 3991

1.js作用域

作用域:變數的合法使用範圍

全域性作用域:在全域性可以使用

函式作用域:只能在函式塊中使用

塊級作用域(es6新增):let,const定義的變數有塊級作用域{}內部使用

自由變數:

1.乙個變數在當前作用域沒有定義,但是被使用了

2.向上級作用域,一層一層一次尋找,知到找到為止

3.如果到全域性作用域都沒找到,則報錯:*** is not define

2. 閉包

閉包:作用域應用的特殊情況,有兩種表現:

1.函式作為返回值

2.函式作為引數

閉包:所有自由變數的查詢,是在函式定義的地方,向上級作用域查詢

不是在函式執行的地方查詢

3. this有幾種賦值情況?

this在各個場景中取什麼樣的值,是在函式執行的時候確定的,不是在定義的時候。
this 的應用場景

1. 作為普通函式被呼叫,直接返回window

3. 作為物件方法被呼叫, 指向例項物件

4. class 方法中呼叫this,this 指向例項物件

5. 箭頭函式 上級作用域this的值

6. settimeout 中的function是本身觸發的執行(window.settimeout),不是zhangsan這個物件觸發的,所以settimeout中的this指向不是zhangsan這個物件,而是 window。

如果settimeou中的是箭頭函式,那是當前物件

箭頭函式this 永遠取它上級作用域的this,箭頭函式不會改變this的值

重點:this 在各個場景中取什麼樣的值,是在函式執行的時候確定的,不是在函式定義時確定的。適用於以上五種場景

4. 手寫bind?

bind分析:

1. 首先 bind 返回乙個函式,函式執行的時候要返回乙個結果

2.this 通過陣列取出第一項把 this 拿出來,原因是 要把bind() 中的第一項取出來作為 this並從引數陣列中踢出去,只留下剩餘的引數

3.this 是誰?誰執行返回的是誰

5. 原型鏈和原型?

js本身是基於原型繼承的語言

題目-知識點-解答

知識點:class和繼承、型別判斷instanceof、原型和原型鏈

原型關係:

每個class 都有顯式原型 prototype \n

每個例項都有隱式原型 __prototype \n

例項的 __proto__ 指向對應class 的 prototype

6. 手動封裝jquery 

7. js同步和非同步的區別是什麼?

怎麼理解同步和非同步?

js是單執行緒,乙個時間段內只能幹一件事情,在執行時,就容易阻塞,使用非同步就是解決單執行緒阻塞的問題。

aler是同步,會阻塞後面的**執行

如何理解js單執行緒?

8. promise載入

js基礎及相關面試題

js基本資料型別 string,object,number,undefined,boolean,function js陣列及其常用的方法 var arr new array arr i 1 新增資料 pop 刪除陣列的方法並返回刪除陣列的值 var arr new array 1,2,3 var d...

基礎面試題

答 物件導向的特徵主要有以下幾個方面 1.抽象 抽象就是忽略乙個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象 二是資料抽象。2.繼承 繼承是一種聯結類的層次模型,並且允許和鼓勵類...

基礎面試題

公有方法。整個程式都可以訪問 私有方法。只有這個類可以訪問 受保護級別。這個包中的類及子類都可訪問 無修飾符時只向同乙個包中的類訪問 許可權限制 private default protected public 被public修飾的變數 public string s 被private修飾的變數 p...