作家
登录

JavaScript 变量作用域分析

作者: 来源:www.28hudong.com 2013-03-30 00:49:43 阅读 我要评论

复制代码 代码如下: /* 代码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 " 全局作用域与局部作用域 全局(global)变量的作用域是全局的,在Javascript中处处有定义;而函数内部声明的变量是局部(local)变量,其作用域是局部性的,只在函数体内部有定义。对于下面的输出读者应不会感到意外。 复制代码 代码如下: /* 代码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"

  推荐阅读

  ajax 同步请求和异步请求的差异分析

ajax同步和异步的差异, 先看2段代码: 代码一: 复制代码 代码如下: Synchronize = function(url,param) { function createXhrObject() { var http; var activeX = [ "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "M>>>详细阅读


本文标题:JavaScript 变量作用域分析

地址:http://www.17bianji.com/kaifa2/JS/24437.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)