作用域 (Scope):作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。
一、全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域,以下几种情形拥有全局作用域
① 最外层函数和在最外层函数外面定义的变量拥有全局作用域:
var a = 'global';
function b() {
var c = 'local';
function d() {
alert (c);
}
d();
}
alert(a); //global
alert(c); //not defined
b(); //local
d(); //no defined
②所有末定义直接赋值的变量自动声明为拥有全局作用域:
function a() {
var b = 'local';
c = 'global';
}
a();
alert(c); //global
alert(b); //not defined
变量c拥有全局作用域,而b在函数外部无法访问到。
③所有window对象的属性拥有全局作用域:
一般情况下,window对象的内置属性都都拥有全局作用域,
例如:
window.name
window.location
window.top等。
二、局部作用域(LocalScope):
和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所以也被称为函数作用域,例如下列代码中的b和函数c都只拥有局部作用域。
function a() {
var b = 'local';
function c() { alert (b); }
c();
}
alert(b); //not defined
c(); //not defined