js高级-闭包
Posted suanmei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js高级-闭包相关的知识,希望对你有一定的参考价值。
function foo(x){
var tmp = 3;
return function(y){ //把一个函数作为返回值,定义时候的作用域
console.log(x+y+(++tmp)) //++tmp先自加再参与表达式运算
}
}
var bar = foo(2) //此时bar指向了匿名函数,匿名函数又指向了 x,tmp两个变量 bar就是一个闭包(匿名函数加x,tmp两个父级变量)
bar(10) //16
bar(20) //27 此时函数执行完成后里面的变量没有回收掉 所以tmp还是4 然后++tmp就是5 x还是2 y就是20 (只要bar没有释放里面的变量就不会回收 。关闭浏览器才会释放)
function d(){
var a = 10;
console.log(a)
}
d(); //执行完成后 a会被回收 浏览器关闭函数会被回收 函数+引用的变量就会形成闭包
以上是关于js高级-闭包的主要内容,如果未能解决你的问题,请参考以下文章