作用域
每个函数都有自己的执行环境,当代码在一个环境中执行时,会创建变量对象的一个作用域,作用域的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。
全局环境:是最外围的一个执行对象,在web浏览器中全局环境被认为是window对象;
var color = "blue";
function changeColor(){
if (color === "blue"){
color = "red";
} else {
color = "blue";
}
}
changeColor();
alert("Color is now " + color); //Color is now red
在上面的代码中,color是全局变量,在函数内部也可以访问变量color。
var color = "blue";
function changeColor(){
var anotherColor = "red";
function swapColors(){
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
// 这里可以访问 color、anotherColor 和 tempColor
}
// 这里可以访问 color 和 anotherColor,但不能访问 tempColor
swapColors();
}
// 这里只能访问 color
changeColor();
闭包
匿名函数指创建一个函数并将它的值赋值给一个变量;如
var afunValue = function(arg1,arg2){
//函数体
}
闭包是指某函数有权访问另一个函数作用域中的变量;创建闭包的常见方式就是在一个函数内部创建另一个函数。
闭包的特点:
1、可以更新外部变量的值
2、可以访问当前函数以外的变量
3、即使外部函数已经返回值,但是闭包仍然能访问外部函数定义的变量