Javascript中的“作用域链”知识分享

名词解释活动对象:一次函
【菜科解读】
很多人都可能知道上例的执行结果,但是不是所有人都明白为什么会是这样的结果,包括我自己。
名词解释
活动对象:一次函数调用开始的时候,javascript解释器会收集函数体中的所有局部变量(以var形式声明的变量),将这些局部变量存储到一个称为“活动对象”的对象里,所有变量都初始为undefined。
代码示例
1 var fun = function(){2 alert(name);3 var name = '段光伟';4 }当执行这个函数时候时(fun()),函数体还没执行到,当前的活动对象为[{ name: undefined }],因此fun()执行的结果为:
函数的[scope]属性:每个函数在定义的时候(生成函数实例的时候)都会分配一个[scope]属性,这个属性指向的当前的“作用域链”。
这个属性开发人员是访问不到的,只有javascript能访问。
作用域链:当函数调用时,javascript引擎会维护一个这次调用的作用域链,这个作用域链条是函数的[scope]指向的作用域链加上函数调用时的活动对象,形式如[ 活动对象, 函数定义时的作用域链条]。
代码示例
1 var a = 1; 2 //步骤1:[ { a: 1, outer: undefined } ] 4 var outer = function(){ 5 //步骤3:[ { b: undefined, inner: undefined } ,{ a: 1, outer: function } ] 6 var b = 2; 7 var inner = function(){ 8 //步骤4:[ {}, { b: 2, inner: function } ,{ a: 1, outer: function } ] 9 return a + b;12 //步骤3:[ { b: 2, inner: function } ,{ a: 1, outer: function } ]13 return inner();16 //步骤2:[ { a: 1, outer: function } ]17 outer();作用域链规则
规则1
javascript一般运行在一定的宿主中,每个宿主都会提供一个“全局对象”,或者叫“全局活动对象”,这个全局对象是所有作用域链的根节点。
规则2
“取值操作”(如:alert(xxxVar))的规则是,沿着作用域链依次查找名称为“xxxVar”的变量,返回第一个找到的值,如果找不到就抛出异常(ReferenceError: xxxVar is not defined)。
规则3
“赋值操作”(如:xxxVar = '段光伟')的规则是,沿着作用域链依次查找名称为“xxxVar”的变量,覆盖第一个找到的值,如果找不到就将“xxxVar”添加到全局对象中。
备注
“闭包”这个概念就是通过“作用域链”实现的,而C#是通过编译器实现的,.NET并不支持。
Javascript,中的,“,作用域链,”,知识,分享,代让RealOne Player“断点续播”
其实RealOne是可以办到这点的。
首先暂停播放的电影,点击菜单中的“收藏夹将剪辑添加至收藏夹”,出现如图所示窗口,勾选“开始时间”,其后的数字就是该电影播放到的当前时间,按“确定”将其添加至收藏夹中。
当以后要从上次中断位置接着看时,只需从“收藏夹”菜单中选择收藏的相应项目,即可实现电影的“断点续播”。
让,RealOne,Player,“,断点续播,”,在用,R
他是千古一帝,为什么却被人污蔑是“私生子”?
因为他修建动用了太多的资源,后来秦始皇还以暴治国,认为暴力可以解决一些问题。
很多人也觉得这是灭亡的一个原因,但话又说回来,秦始皇却让中原实现了统一。
他将权力紧紧的握在自己的手上,灭了其他六国,实现了大一统,是历史上一个非常伟大的举措,也是中国历史上的奇迹。
秦朝的建立开始了中国的封建社会,也让封建社会持续了2000多年。
然而秦始皇平定六国之后统一江山,但是他却没有很好的守住江山,后来末代的秦王子接过秦国传下来的玉玺,没想到的是,在他即将上位的时候,却迎来了的攻击。
前前后后大概只有十几年的时间,这样一个如此盛世的王朝,就此灭亡。
刘邦登上政治舞台,建立了汉王朝,将汉朝的文化推向极致。
我都觉得秦朝的灭亡最重要的一个原因就是秦朝的暴政。
当年有一本书中写过,秦始皇禁止文字的流通,一直非常的残暴,实行了很多残暴的刑罚,想通过这些刑法来震慑住身边的人再加上,并没有秦始皇厉害,奖罚不分,让老百姓过上民不聊生的生活,社会矛盾也非常的尖锐。
所以说到了汉朝的时候,很多老百纷纷站出来抵抗。
老百姓认为秦国是一个暴政的国家,不能很好的统治他们,反而将他们推向火海。
后来有很多人列出秦始皇的罪名,并且将他跟相提并论。
指出,很多人没有正确的认识秦始皇,秦朝存在的时间非常的短。
但,他认为我们不能从两个时代去比较两个君主,这显然是非常可笑的行为。
后来有人为了贬低秦始皇,竟然在史记中写着秦始皇,不是一个真正的皇子,是的儿子,这一点对于秦始皇来说简直就是。
当年秦庄王在赵国被挟持的时候,秦国与赵国争战不休。
因为的地位非常的低下,所以秦国跟赵国根本就没有把他当回事,但谁都没有想到!却发生了一件惊天动地的大事,那就是秦昭王的太子突然去世。
太子去世之后一个国家没有了太子,这是一个非常可怕的事情,所以说一定要抓紧立下一任太子,于是只好找到子楚。
子楚出身非常的卑微,但他却成了一个太子。
但他终究没有办法坐上皇位,因为地位非常的卑微,而这个时候吕不韦在子楚身上看到了一些希望。
他希望从子楚身上得到一些好处跟利益,他想将子楚推上皇位,自己掌握政权,成为红人,让子楚做傀儡。
吕不韦是一个非常有想法非常有心机的人,后来他又把一个怀孕没有多久的女人送给了子楚,然而希望这个女人能够把孩子生下来,当成子楚的亲身骨肉。
当这个女人来到子楚身边的时候,过了九个月生下了一个孩子,而这个孩子就是,也就是现在的秦始皇。
所以说很多人认为秦始皇并不是子楚的孩子,而是吕不韦的孩子。
后来竟然叫秦始皇为吕政,但其实这个这是不真实的记录,秦始皇特别的冤。
为什么说秦始皇,根本不是吕不韦的孩子。
如果吕不韦想要通过自己的孩子夺取秦国的大权,他应该巴结自己当年送进宫的女人,可以借此机会增加嬴政跟吕不韦的关系。
可是当时吕不韦完全具备这样一个便利的条件,但吕不韦却没有讨好嬴政,也没有讨好。
反而等到嬴政长大之后,甚至开始疏远当时被他送进宫的女人。
要知道,在战国的时候,秦国已经形成了一个非常完整的体系。
秦始皇也将权力仅仅的掌握在自己手上,加强中央集权的管理。
再加上文武百官,都非常的忌惮秦始皇,也形成了一个固定的政治圈,所以很多非常敏感的东西,都需要秦始皇去审核。
官员不可以随随便便的就执行命令,必须要手持印信才可以,即使你的权力再大,也不可以跟皇帝抗衡,在历史上,也是秦始皇身边的人。
嫪毐当年跟秦始皇的母亲发生关系,并且借着赵姬的势力不断的在后宫中发展起来,而且势头大增,甚至有要杀害秦始皇自己当皇帝的想法。
一直想要夺得秦始皇的政权,但最后还是被秦始皇压制下去了。
因为秦国的种种制度没有办法让大臣掌握政权,掌握兵权,跟秦始皇抗衡,这也是很多有谋逆造反的人没有成功的一个原因,还有一个原因就是很臣子有自己的封地,而他们的目的就是让自己封地的经济迅速的发展起来。
他们并没有权利在自己的封地上建设一支队伍。
他们的封地,秦王可以以任何理由收回,所以领土被收回的可能性是非常大的,很有可能就被收回,更别说是在自己的领土上练兵了。
然而当地的老百姓没有办法跟秦王抗衡,所以有的人就只好在背地里骂嬴政,骂他不认吕不韦。
通过这一个方式来讽刺秦始皇,当然这对于一个王朝的君主来说是起不到什么作用的。
随机文章请问宋代的兵制分为哪几类?明朝历史硕妃娘娘之谜蛟龙号到底在隐瞒什么,深海底发现未知生物/疑似巨型真龙蛇类祖先厚针龙图片,身躯像蛇长有双足神似中国神龙(现今已灭绝)为什么有人相信ufo,美军曾建UFO研究基地/霍金曾预言UFO存在