最近在写一些东西,需要用到闭包的一些知识,初听到这个概念的时候到网上搜了一些文章,大多数写的比较抽象,直到看到我心目中的牛人阮一峰写的一篇关于闭包的博客,从而豁然开朗,因此本文中也有一部分观点引用了阮一峰老师的。闭包是JavaScript中比较抽象的一个概念,很多初学者都没有很好的理解,在此将我所理解的闭包记录下来分享给大家,希望能对各位有所帮助。
1. 变量的作用域
在讲闭包之前,首先来说一下JavaScript中变量的作用域问题。在JS中变量分为两种:局部变量和全局变量,与此相对应的两种变量的作用域分别为局部作用域和全局作用域。在函数内部定义的变量为局部变量,在函数外部定义的变量称作全局变量。JS特有的语法规定全局变量在函数内部和外部都可以使用,但是局部变量只能在在函数内部及其子函数中使用,我们来看如下案例:
var num = 18; //全局变量function func(){ var age = 22; //局部变量
console.log(age,num); //22 18}
func();
console.log(num,age); //18 age is not defined
网友评论


