很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包。这是一篇面对新手的对于闭包的解释,没有晦涩生硬的语句,一看就能明白。如有不妥欢迎指正!

要理解闭包,首先要理解变量的作用域

JS中变量作用域有两个:全局变量以及局部变量,顾名思义,全局变量就是在任何位置都可以引用的变量,局部变量就是只能在特定位置才能引用的变量,看下面代码。

var globalScope="global scope";
function f(){
var localScope="local scope";
console.log(globalScope);//global scope
}
console.log(localScope);//undefined

在函数f()内可以访问到函数体外定义的globalScope,而在函数体外不能访问到函数体内定义的localScope,这就是全局变量与局部变量的区别。

难道在函数体外就永远访问不到localScope了吗?非也,闭包就是为此而生。

function f(){
var localScope="local scope";
return function(){
console.log(localScope);
}
}
f()();//local scope

我们在函数f()外访问到了局部变量localScope,这里在函数f()内定义的匿名函数就是一个闭包!

这里两个圆括号是什么意思呢?我们可以简单理解成执行两次f(),执行一次得到function(){console.log(localScope);},再执行一次相当于执行这个匿名函数。

好了,对闭包的简单理解就是这么多,谢谢阅读!

原创文章,转载请注明出处!

最新文章

  1. linux软连接和硬链接
  2. 利用Unity制作“表”
  3. U3D包大小优化之microlib
  4. FTP服务器常规操作
  5. 关于FastDFS Java客户端源码中的一个不太明白的地方
  6. [Objective-c 基础 - 2.5] NSString
  7. 已知有一个Worker 类如下:  public class Worker  { private int age;  private String name;  private double salary;  public Worker (){}  public Worker (String nam
  8. Delphi 和 DFM
  9. Leetcode-33-Search in Rotated Sorted Array (Hard)
  10. div+CSS实现段落首行缩进两个字符
  11. 移动APP云测试平台测评分析
  12. 写给自己的web总结——css篇(1)
  13. Codechef July Challenge 2018 : Picking Fruit for Chefs
  14. 15、TypeScript-函数
  15. Android高效内存2:让图片占用尽可能少的内存
  16. 菜鸟学SSH(一)——Struts实现简单登录(附源码)
  17. Web前端之Javascript详解20180330
  18. JAVA 定时器的三种方法
  19. Hadoop端口
  20. 小故事学设计模式之Decorate: (二)老婆的新衣服

热门文章

  1. 自动SPF生成工具
  2. [转载]QString 乱谈(3)-Qt5与中文
  3. MyBatis知多少(18)MyBatis系统
  4. Maven进价:Maven构建系列文章
  5. 【原创】C#搭建足球赛事资料库与预测平台(5) 赔率数据表设计1
  6. 使用Service.Stack客户端编写redis pub sub的方法
  7. Hadoop入门进阶课程12--Flume介绍、安装与应用案例
  8. sql server 查找包含字符串的对象
  9. BLOCK的应用
  10. 一个python爬虫小程序