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高级-闭包的主要内容,如果未能解决你的问题,请参考以下文章

JS高级---闭包案例,点赞

JS高级---闭包小案例

js高级-闭包

高级js4 闭包作用域面试题详解 this 闭包方案

2022前端面经---(js高级)一文让你搞懂闭包

闭包的高级使用-变量私有化-模块化开发-js命名空间