浅谈javascript闭包

本文详细解释了闭包的概念,探讨了闭包的产生方式及特点,并通过实例展示了闭包如何在JavaScript中保存变量状态,避免变量被销毁,以及解决for循环中变量作用域问题。

面试中常常被面试官问道什么是闭包,有时面试官也会让你手写一个简单的闭包函数,为了弄清楚其原理,我们可以亲自动手试试。

1.什么是闭包?

简单来说函数内部能访问另一个函数内部的变量的方法就叫做闭包。

2.闭包怎么产生的

(1)在一个函数内部创建另一个函数

  function global(){

  var num=1;

  function closeArea(){ //闭包

      return num++; 

  }

 return closeArea;//返回闭包函数

  }

闭包特点:

(1).通常我们在函数内部定义的变量,都会在函数执行完之后被销毁;但是如果有闭包函数的存在,那么这个变量的值就会在闭包函数中被储存下来,直到闭包不存在为止。

(2)闭包只能取得他的父级的包含函数中的最后一个变量,下面通过一个经典的列子做一个介绍。

for循环里打印i的值。

原因:js 执行的时候首先会先执行主线程,异步相关的会存到异步队列里,当主线程执行完毕开始执行异步队列, 主线程执行完毕后,此时 i 的值为 4,说以在执行异步队列的时候,打印出来的都是 4(需要对 event loop 有所了解(js 的事件循环机制))

如何修改使其正常打印:(使用闭包使其正常打印)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值