闭包的定义:
闭包(closuer)是一个受到保护的变量空间,由内嵌函数构成。就是说闭包内的变量不能被外部函数访问,为什么会这样?
函数的作用域:
JS具有函数级的作用域,这表明外部函数不能访问内部函数的变量;JS的作用域是词法性质的,这意味着函数运行在定义它的作用域中,而不是调用它的作用域。(这与 this 的用法有很大的不同)这两个因素使得包裹在匿名函数中的变量变得安全,进而创建类的私有变量。
var baz; (function(){ var foo = 10; var bar = 2; baz = function(){ return foo * bar; } })(); baz();
创建闭包:
返回一个内嵌函数是创建闭包最常用的方式。