1.变量的作用域
变量可以是全局的,也可以是局部的,在谈论全局变量和局部变量之间的区别时,我们其实是在讨论变量的作用域(scope)。
I.全局变量:可以在脚本的任何位置被引用。作用域是整个脚本。
II.局部变量:只存在于对它作出声明的那个函数的内部,在那个函数外部是无法引用它的。作用域仅限于某个特定的函数。
III.局部变量和全局变量
如果全局变量与局部变量名相同,局部变量将覆盖全局变量。
II.局部函数
外部函数可以调用其内部的函数。
只有当外部函数被调用时,内部局部函数才会被执行
2.闭包
有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式,就是在一个函数内部创建另一个函数。
栗子:
Function createComparisonFunction(propertyName){
Return function(object1,object2){
Var value1=object1[propertyName];
Var value2=object2[propertyName];
If(value1<value2){
Return -1;
}else if(value1>value2){
Return 1;
}else{
Return 0;
}
}
}
以上加粗的代码中访问了外部函数的变量propertyName.