码迷,mamicode.com
首页 > Web开发 > 详细

js高级-闭包

时间:2018-05-29 11:54:13      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:关闭   关闭浏览器   高级   返回   匿名   bar   执行   函数   var   

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高级-闭包

标签:关闭   关闭浏览器   高级   返回   匿名   bar   执行   函数   var   

原文地址:https://www.cnblogs.com/suanmei/p/9104164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!