js教程:JavaScript作用域(Scope)

2016-02-20 00:55 9 1 收藏

今天图老师小编要向大家分享个js教程:JavaScript作用域(Scope)教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

作用域(scope)是JavaScript语言的基石之一,在构建复杂程序时也可能是最令我头痛的东西。记不清多少次在函数之间传递控制后忘记关键字引用的究竟是哪个对象,甚至,我经常以各种不同的混乱方式来曲线救国,试图伪装成正常的代码,以我自己的理解方式来找到所需要访问的变量。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

这篇文章将正面解决这个问题:简述上下文(context)和作用域的定义,分析可以让我们掌控上下文的两种方法,最后深入一种高效的方案,它能有效解决我所碰到的90%的问题。

我在哪儿?你又是谁

JavaScript 程序的每一个字节都是在这个或那个运行上下文(execution context)中执行的。你可以把这些上下文想象为代码的邻居,它们可以给每一行代码指明:从何处来,朋友和邻居又是谁。没错,这是很重要的信息,因为 JavaScript社会有相当严格的规则,规定谁可以跟谁交往。运行上下文则是有大门把守的社区而非其内开放的小门。

我们通常可以把这些社会边界称为作用域,并且有充足的重要性在每一位邻居的宪章里立法,而这个宪章就是我们要说的上下文的作用域链(scope chain)。在特定的邻里关系内,代码只能访问它的作用域链内的变量。与超出它邻里的变量比起来,代码更喜欢跟本地(local,即局部)的打交道。

具体地说,执行一个函数会创建一个不同的运行上下文,它会将局部作用域增加到它所定义的作用域链内。JavaScript通过作用域链的局部向全局攀升方式,在特定的上下文中解析标识符。这表示,本级变量会优先于作用域链内上一级拥有相同名字的变量。显而易见,当我的好友们一起谈论Mike West(本文

来源:http://www.tulaoshi.com/n/20160220/1632846.html

延伸阅读
标签: Web开发
从一个简单的问题谈起: script type="text/javascript"alert(i); // ?var i = 1;/script 输出结果是undefined, 这种现象被称成预解析:JavaScript引擎会优先解析var变量和function定义。在预解析完成后,才会执行代码。如果一个文档流中包含多个script代码段(用script标签分隔的js代码或引入的js文件),运行顺序是: step1...
标签: Web开发
JavaScript所提供的语句分为以下几大类: 1.变量声明,赋值语句:var。 语法如下: var 变量名称 [=初始值] 例:var computer = 32 //定义computer是一个变量,且有初值为32。 2.函数定义语句:function,return。 语法如下: function 函数名称 (函数所带的参数) { ...
标签: Web开发
一、利用全局变量 这是最简单的一种方式,比如Google Adsense: script type="text/javascript"google_ad_client = 'pub-3741595817388494';/scriptscript type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"/script 缺点是引入了全局变量。其中引入文件的方式还有两个...
标签: Web开发
1.关于prototype:这里prototype是javascript的一个特性,不是那个有名的prototype框架: script type="text/javascript" var string="hello world"; try{   alert(string.phone()); }catch(e){alert(e);} String.prototype.phone=function() {   return "159-10957151"; }   alert(...
标签: Web开发
JavaScript语言是基于对象的(Object-Based),而不是面向对象的(object-oriented)。之所以说它是一门基于对象的语言,主要是因为它没有提供象抽象、继承、重载等有关面向对象语言的许多功能。而是把其它语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统。 虽然JavaScript语言是一门基于对象的,但它还是具有一些面向对象...

经验教程

695

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部