之前在理解闭包的时候遇到一些困难,现在将其整理
说到闭包则必须谈到作用域。JavaScript的作用域只有2种,全局作用域和函数作用域。
理解两种作用域之后再来看浏览器是如何处理函数的,浏览器解析到函数后会把函数里需要用到的变量数据准备好用来运行,浏览器先会在当前作用域里找有没有该变量,如果没有再去上级作用域找。最终到达全局作用域,可以通过下面的例子做个实验
输出结果:1
var a = 1;
(function(){
// var a = 2;
(function(){
// var a = 3;
alert(a);
}())
}())
输出结果:2
var a = 1;
(function(){
var a = 2;
(function(){
// var a = 3;
alert(a);
}())
}())
输出结果:3
var a = 1;
(function(){
var a = 2;
(function(){
var a = 3;
alert(a);
}())
}())