問題:
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
1function
foo(name)
4var f = new foo('killua') //
例項化
物件中的this
1var obj = 6}
7 obj.printname() //
作為物件屬性來執行,this指向obj這個物件
普通函式中的this
1function
fn()
4 fn()
1function
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物...