一、全域性作用域(比如: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...