var color = 'blue';
function changeColor() {
var anotherColor = 'red';
function swapColors() {
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
}
swapColors();
}
changeColor();
——几个注意点:
1)声明局部变量必须用var,不然会污染全局变量
scope = "gobale";
function checkscope() {
scope = "local";
}
checkscope();
console.log(scope); //"local"
2)一般来说内部能访问外部,外部不能访问内部。 那么怎么让外部也能访问内部? —— return
js没有块级作用域,而有函数作用域。 函数作用域是指:在函数内声明的所有变量在函数体内是始终可见的。
参考:学习Javascript闭包(Closure)——阮一峰
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
f2()就是闭包