之前一直对这句话有疑问,我创建了一个函数,但是这个函数不一定就是闭包啊。确实广义所有JS的函数都可以称为闭包,因为JS函数在创建时保存了当前的词法环境。
js的执行环境本身就是一个scope(浏览器的window/node的global),我们通常称之为全局作用域。每个函数,不论多深,都可以认为是全局scope的子作用域,函数内的变量的作用域会延伸到在该函数内定义的函数里,这样,子函数就符合了闭包的定义,所以每个函数都是闭包。
之前一直对这句话有疑问,我创建了一个函数,但是这个函数不一定就是闭包啊。确实广义所有JS的函数都可以称为闭包,因为JS函数在创建时保存了当前的词法环境。
js的执行环境本身就是一个scope(浏览器的window/node的global),我们通常称之为全局作用域。每个函数,不论多深,都可以认为是全局scope的子作用域,函数内的变量的作用域会延伸到在该函数内定义的函数里,这样,子函数就符合了闭包的定义,所以每个函数都是闭包。