答、簡單的說,作用域是針對變量的,比如我們創(chuàng)建一個函數(shù) a1,函數(shù)里面又包了一個子函數(shù)a2.此時就存在三個作用域:
全局作用域、a1作用域、a2作用域;即全局作用域包含了a1的作用域,a2的作用域包含了a1的作用域。
當a1在查找變量的時候會先從自身的作用域區(qū)查找,找不到再到上一-級 a2的作用域查找,如果還沒找到就到全局作用域區(qū)查找,這樣就形成了一個作用域鏈。
理解閉包首先要理解,js 垃圾回收機制,也就是當一個函數(shù)被執(zhí)行完后,其作用域會被收回,如果形成了閉包,執(zhí)行完后其作用域就不會被收回。
如果某個函數(shù)被他的父函數(shù)之外的一個變量引用,就會形成閉包。
閉包的作用,就是保存自己私有的變量,通過提供的接口(方法)給外部使用,但外部不能直[接訪問該變量.