1. 程式人生 > >作用域和閉包(五)常見面試題

作用域和閉包(五)常見面試題

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

 分為變數定義和函式宣告(和函式表示式的區別)

全域性作用域和函式作用域或者是塊級作用域(ES6)中,變數宣告(var)和函式宣告會被提升到作用域頂部,

而函式表示式不會,只是當做一個var變數提升,函式沒有被提升,另外ES6 中 let 和 const識別符號定義的變數

也不會發生提升(臨時性死區TDZ)

 

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

作為建構函式

作為物件屬性

作為普通函式

call,bind,apply

箭頭函式中(ES6)

 

3. 建立10個<a>標籤,點選彈出對應序號

 

使用IIFE,每次都建立一個獨立的函式,傳入不同的i

或者ES6 let 迴圈

 

4. 如何理解作用域

(1)自由變數: 在當前作用域沒有被定義的變數

(2)若在當前作用域找不到,則往父級作用域查詢,自由變數的查詢,父級作用域:函式定義時所在的上下文

(3)閉包兩個場景,作為引數傳入和函式返回值

 

5. 實際開發中閉包應用

// 用於封裝變數,收斂許可權

只有通過返回函式能對_list陣列操作,外部不可見