JavaScript变量作用域
- ~Wing~ - 博客园-首页原创精华区变量作用域是程序中定义这个变量的区域. 先贴一段代码,如果读者对代码的输出并不感到困惑就不用往下面读了. /* 代码1 */
var scope = "global ";
function checkScope() {. document.write(scope); //输出"local". //输出"childLocal".
变量作用域是程序中定义这个变量的区域。
先贴一段代码,如果读者对代码的输出并不感到困惑就不用往下面读了。
/* 代码1 */ var scope = "global "; function checkScope() { var scope = "local "; function childCheck() { var scope = "childLocal "; document.write(scope); } function childUndefined() { document.write(scope); var scope; } function childOverride() { scope = "childOverride "; document.write(scope); } document.write(scope); //输出"local" childCheck(); //输出"childLocal" childUndefined(); //输出"undefined" childOverride(); //输出"childOverride" document.write(scope); //输出"childOverride" } checkScope(); //输出"local childLocal undefinedchildOverride childOverride" document.write(scope); //输出"global "
/* 代码2 */ var scope = "global"; function checkScope() { var scope = "local"; document.write(scope); } checkScope(); //输出"local" document.write(scope); //输出"global"
全局变量作用域中使用变量可以不用var语句,但在声明局部变量是一定要使用var语句,否则会视为对全局变量的引用。看下面代码:
/* 代码3 */ var scope = "global"; function checkScope() { scope = "local"; document.write(scope); } checkScope(); //输出"local" document.write(scope); //输出"local"
Javascript没有块级作用域,函数中声明的变量在整个函数中都是有定义的。对于下面的代码对于生疏的读者可能颇感意外:
/* 代码4 */ var scope = "global"; function checkScope() { document.write(scope); //语句4.1 var scope = "local"; //语句4.2 document.write(scope); } checkScope(); //输出"undefinedlocal"
由于语句4.1(var scope = "local";)声明的变量在整个checkScope函数作用域内都有效,因此在语句4.2(document.write(scope); )执行的时scope引用的是局部变量,而此时局部变量scope尚未定义,所以输出”undefined”。因此一个好的编程习惯是将所有的变量声明集中起来放在函数的开头。
在了解了上述内容之后,读者再看看代码1应该不会感到困惑了。/* 代码5 */
var scope = "global ";
var obj = new Object();
obj.scope = "object ";
obj.checkScope = function () {
var scope = "loacl ";
document.write(scope); //输出"loacl"
document.write(this.scope); //输出"object"
document.write(window.scope); //输出"global"
}
obj.checkScope(); //输出"loacl object global"
原文链接:http://blog.csdn.net/kingwolfofsky/article/details/6581944
作者: 狼の禅 发表于 2011-07-04 13:04 原文链接
最新新闻:
· 出发,为了无处不在的 webOS(2011-07-04 21:05)
· iPad的使用量激增 占全球网络浏览量1%(2011-07-04 21:03)
· 我的10个开发原则(2011-07-04 21:01)
· 七大被低估科技股:苹果微软榜上有名(2011-07-04 20:54)
· Google不允许13岁以下儿童使用Gmail(2011-07-04 20:44)
编辑推荐:博客园电子期刊2011年6月刊发布