基礎知識(作用域和閉包)

2021-09-29 17:32:12 字數 1039 閱讀 2364

一、全域性作用域(比如:window)

二、函式作用域(比如:function內宣告的變數只能function內使用)

三、塊級作用域(比如:if語句內宣告的變數只能if內使用)

自由變數:乙個變數如果在當前作用域沒有定義,但被使用了,就向上級作用域一層一層尋找,直到找到位置,如果到全域性作用域都沒有找到,則報錯xx is no defined,如下:

let a  = 0;

function f1()

return f3()

}return f2()

}f1() //返回400

閉包:所以的自由變數的查詢是在函式定義的地方向上查詢,不是在函式執行的地方查詢,如下:

function create() 

}let b = create();

let a = 200;

b() //列印100

let a = 200;

function b()

function print()

print() //列印200

this:取值是在函式執行的地方確定的,不是在函式定義的地方

1、作為普通函式

3、作為物件方法

4、在class方法中呼叫

5、箭頭函式

function a() 

a() //列印window

a.call() //列印

let b = a.bind()

b() //列印

let people = ,

wait() )

},wait1() )

}}class people1

hello()

}let lishi = new people1('李四');

lishi.hello(); //列印this為lishi

作用域和閉包

給執行上下文環境下乙個通俗的定義 在執行 之前,把將要用到的所有的變數都事先拿出來,有的直接賦值了,有的先用undefined占個空。全域性 的上下文環境資料內容為 1 普通變數 包括函式表示式,如 var a 10 宣告 預設賦值為undefined 2 函式宣告 如 function fn 賦值...

作用域和閉包

題目 知識點 1 執行上下文 2 this 3 作用域 4 作用域鏈 5 閉包 一 執行上下文 ps 函式宣告和函式表示式的區別 執行上下文 console.log a undefined var a 10 fn 張三 22 張三 22 function fn name 在script標籤內的全域性...

作用域和閉包

現有宣告後有賦值 宣告在編譯時會提公升位置,提公升時函式會優先變數,如果是同名函式順序排在後面的會覆蓋前面的函式 函式表示式 立即執行的函式表示式 var a 2 function iife global window 塊作用域和閉包 閉包 function foo return bar var b...