js中由于作用域链,函数里var定义的变量是局部变量,函数外并不能访问到函数里定义的局部变量,函数外定义的变量函数里面可以访问到。这样一层一层能访问函数套函数 函数里能放问函数外的定义的变量就是作用域链function f1(){
var n=999;
function f2(){
alert(n); // 能访问并输出
}
}
有了这个概念之后用4个例子解释闭包我认为在闭包就是有权访问其他函数内部变量的的函数就是闭包
1 外面调用函数里调用函数 2函数里返回函数名外面调用;
这里要注意--直接执行不返回值是不行的因为当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包这里就是第二种情况在外变量赋值创建了一个引用关系。不然会被垃圾回收机会回收。闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。
而形成闭包就是函数外调用函数里声明的函数
1闭包内this指向问题
2渐变定时器定义反复执行闭包函数保存当前前后图片下标问题
3函数声明 其中变量并不赋值
4函数内调用函数外调用问题。
网友评论