JavaScript作用域

理解 JavaScript 作用域

JavaScript作用域

  任何程序设计语言都有作用域的概念,简单的说:作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。

  • 全局作用域(Global Scope)在代码中任何地方都能访问到的对象拥有全局作用域
  • 最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:
1
2
3
4
5
6
7
8
9
10
11
12
var authorName="山边小溪";
function doSomething(){
var blogName="梦想天空";
function innerSay(){
alert(blogName);
}
innerSay();
}
alert(authorName); //山边小溪
alert(blogName); //脚本错误
doSomething(); //梦想天空
innerSay() //脚本错误
  • 所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:
1
2
3
4
5
6
7
8
function doSomething(){
var authorName="山边小溪";
blogName="梦想天空";
alert(authorName);
}
doSomething(); //山边小溪
alert(blogName); //梦想天空
alert(authorName); //脚本错误

变量blogName拥有全局作用域,而authorName在函数外部无法访问到。

  • 所有window对象的属性拥有全局作用域,一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。