js面試題知識點全解 一作用域

2022-08-27 02:03:10 字數 2013 閱讀 8777

問題:

1.說一下對變數提公升的理解

2.說明this幾種不同的使用場景

3.如何理解作用域

4.實際開發中閉包的應用

知識點:

js沒有塊級作用域

只有函式和全域性作用域,如下**:

if(true

)//同等於下面的**

//建議用下面方式寫

varname

if(true

) console.log(name)

//列印出來killua

//函式和全域性作用域

var a=100 //

定義全域性作用域變數

function

fn()

當前作用域沒有定義某個變數,所以要去它的父級作用域找,這樣的就是作用域鏈

//

作用域鏈例子1

var a = 100 //

自由變數

function

fn()

fn()

//作用域鏈例子2

var x =100

function

f1()

f2()

}f1()

作用域和閉包-執行上下文

console.log(a); //

undefined

var a=10; //

這種寫法,因為a是全域性變數。會把var a;提到最前面

/*以上**等同於:

var a;

console.log(a);

a=10;

*/fn("killua");

function

fn(name)

//函式宣告會提前到最前面,所以可以先執行函式,再宣告函式也可以

fn('killua')

function

fn(name)

//在函式內也會把函式宣告,變數宣告提到函式內部最前面

} //

函式執行完輸出

//killua 10

//100

this介紹:

this要在執行時才能確認,定義時無法確認

var a=

}a.fn()

//this===a

a.fn.call() //

this===

var fn1 =a.fn

fn1()

//this===window

建構函式中的this

1

function

foo(name)

4var f = new foo('killua') //

例項化

物件中的this

1

var obj = 6}

7 obj.printname() //

作為物件屬性來執行,this指向obj這個物件

普通函式中的this

1

function

fn()

4 fn()

1

function

fn1(name,age)

4 fn1.call(,"killua",20) //

call呼叫乙個物件的乙個方法,以另乙個物件替換當前物件,這裡把this替換成

6var fn3 = function

(name,age).bind() //

.bind()方法和前兩個一樣,把this替換成,但是必須用在函式表示式,不能用在普通函式

9 fn3('killua',20)

以上知識點總結出題目內容

說一下對變數提公升的理解:

1.變數定義 //變數宣告會提前

2.函式宣告(注意和函式表示式的區別) //函式宣告提公升

如何理解作用域:

1.自由變數

2.作用域鏈,即自由變數的查詢

3.閉包的兩個場景

js面試題知識點全解 一變數型別和計算

1.js中使用typeof能得到哪些型別 2.何時使用 和 3.js中的內建函式 4.js變數按儲存方式區分為哪些型別,並描述其特點 5.如何理解json 以下對這些問題的知識點做一些總結 1.考點 js變數型別 1 typeof undefined undefined 2typeof killua...

JS作用域面試題總結

1.js作用域 全域性變數,區域性變數 內部可以訪問外部,但外部的不能訪問內部的 var a 10 function aaa aaa a 為外部變數即全域性變數,所以可以直接訪問到 結果為10 function aaa aaa alert a a 為函式aaa 內部變數量即區域性變數,所以無法訪問到...

kafka高階知識點面試題

在老版本kafka中,訊息都是來一條傳送一條,這種方式會造成訊息傳送的吞吐量比較低,所以之後kafka對這種方式進行了優化,提供了批量傳送的方式,把多條訊息繫結成一批訊息傳送,以此來提高訊息傳送的吞吐率。這種方式就是緩衝池的思想,傳送訊息的邏輯大概如下 1 把訊息封裝成producerrecord物...