JS的作用域是個比較復雜的東西
JS的作用域是靜態的,當定義一個function時,function的作用域是定義function時所在的作用域,而不是調用function時所在的作用域。
當調用一個function時,就會創建一個新的作用域,在這個作用域中用var定義的變量就是局部變量,一般情況下function執行結束之後這個調用時所創建的作用域就會被系統回收。
在function圈套定義時,如果裡面定義的function被保存了下來(如:賦給一個全局變量)。那麼它所在的作用域(調用外面function時所創建的作用域)也必須一起保存下來(也就是說外面function執行結束時這個調用時所創建的作用域不會被系統回收,要等到保存下來的function被系統回收時系統一起回收)。
作用域保存下來在這個作用域中的所有局部變量當然也都保存了下來。