JavaScript執行值會產生做用域,做用域是執行環境。閉包
window對象執行會產生全局做用域,函數
每一個函數執行的時候會產生這個函數的做用域,並將其放在函數做用域鏈的頂端,查找變量是由頂端往下查找。spa
函數執行完畢會銷燬創造的做用域鏈,經過刪除引用的方式,函數的做用域實際刪除是經過垃圾回收刪除的,可是通常狀況下函數執行完畢,做用域自己也會被銷燬,但若是是閉包,即函數內部返回了內部的一個函數,這個函數會引用做用域。code
function a(){ var num = 10; function b(){ num++; console.log(num) } console.log(num) return b; } var f1 = a(); //10 var f2 = a(); //10 f1(); //11 f2(); //11 a(); //10