本文大多由网友整理,本人参考后自己略加总结、收纳,不喜勿喷。
Javascript的作用域
1. 全局作用域(Global Scope)
在代码任何位置都能访问到的对象都具有全局作用域,一般有3中情况:
(1)最外层函数、最外层函数之外定义的变量拥有全局作用域,代码如下:
var authorName = "山边小溪";
function doSomething(){
var blogName = "梦想天空";
function innerSay(){
alert(blogName);
}
innerSay();
}
alert(authorName);//山边小溪
alert(blogName);//脚本报错
doSomething();//梦想天空
innerSay()//脚本报错
(2)所有没有定义而直接赋值的变量拥有全局作用域,代码如下:
function doSomething(){
var authorName = "山边小溪";
blogName = "梦想天空";
alert(authorName);
}
doSomething(); //山边小溪
alert(blogName);//梦想天空
alert(authorName);//脚本报错
其中blogName没有定义直接赋值就拥有全局作用域,而调用authorName就会报错。
(3)所有window对象的属性拥有全局作用域
例如window.name、window.location、window.top等等。
2. 局部作用域(Local Scope)
局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。
function doSomething(){
var blogName = "梦想天空";
function innerSay(){
alert(blogName);
}
innerSay();
}
alert(blogName);//脚本错误
innerSay();//脚本错误
作用域链(Scope Chain)
明天待续
网友评论