`
chourentang
  • 浏览: 56543 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JavaScript链式作用域

阅读更多
网上介绍js链式作用域的很多,但写的很烦杂,不好理解,现在根据网络文章整理一个简单易懂的,如下:
1.理解js的链式作用域的前提
  1)首先要知道js的变量作用域,js的变量作用域就两种:全局和局部
  2)js中当前作用域能过访问其上层作用域的变量和函数

2.js链式作用域的定义:
  JS权威指南的描述:
      JavaScript中的函数运行在他们被定义的作用域里,而不是他们被执行的作用域里。
  这句话很难理解,但是换做简单的描述,JS的链式作用域就是:
      JS中当遇到对变量名或者函数名的使用时,会首先在当前作用域查找变量或者函数,如果没有找到,就会到其上层作用域中寻找,并以此类推。

  下面这个例子在很多博文中引用:
var x = 10;

function test() {
	alert(x);
}

test();

    上面例子中弹出的值是什么? 答案是10,这个很好理解,因为上面提到:2)js中上层对象中的变量和函数对其子对象都是可见的
  下面对这个例子稍微变换下:
var x = 10;

function test() {
	alert(x);
	var x = 2;
}

test();

    改变后的例子弹出的值是什么?答案是undefined,如果用java等其他编程语言的思维分析很理解,但利用JS链式作用域来理解,函数test在执行时,会先在其本身的作用域中寻找,而函数本中是定义了x的,就不会在向上层寻找,但是是定义在alert之后,因此alert会弹出undefined,如果函数内没有定义x,就像最初的例子,那么就会在其上层作用域寻找,就是10

分享到:
评论

相关推荐

    Javascript 链式作用域详细介绍

    主要介绍了Javascript 链式作用域详细介绍的相关资料,需要的朋友可以参考下

    【JavaScript源代码】详解JavaScript中的链式调用.docx

    详解JavaScript中的链式调用  链模式 链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是... this的作用域链,jQuery的实现方式,通常链式调用都是采用这种方式。 返回对象本身, 同t

    详解JavaScript中的链式调用

    链模式 链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴... this的作用域链,jQuery的实现方式,通常链式调用都是采用这种方式。 返回对象本身, 同this的区别就是显示返回链式对象。 闭包返回对象

    JavaScript程序设计教学设计:函数的嵌套和递归.docx

    特点:内层函数只能在外层函数作用域内执行,在内层函数执行的过程中,若需要引入某个变量,首先会在当前作用域中寻找,若未找到,则继续向上一层级的作用域中寻找,直到全局作用域,我们称这种链式的查询关系为作用...

    图解prototype、proto和constructor的三角关系

    作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释原型的三角关系 图示 概念  上...

    JQuery权威指南源代码

    使用函数$.proxy()改变事件函数的作用域 使用jQuery扩展工具函数实现对字符串指定类型的检测 第10章 在指定的查找范围内获取DOM元素 选择器中含有空格符与不含空格符的区别 事件中的target方法优化冒泡现象 使用...

    Node.js MongoDB AngularJSWeb开发中文版.part1

    2.6 理解变量作用域 22 2.7 使用JavaScript对象 22 2.7.1 使用对象语法 23 2.7.2 创建自定义对象 23 2.7.3 使用原型对象模式 24 2.8 处理字符串 25 2.8.1 合并字符串 26 2.8.2 在字符串中搜索子串 26 2.8.3 在一个...

    精通AngularJS part1

    运用name属性将表单附加到作用域上154 为用户信息表单增加动态行为154 显示验证错误155 让保存按钮无效156 使原生浏览器校验无效157 56在其他表单中嵌套表单157 将子表单作为可重用组件157 57重复子表单158 ...

    jQuery权威指南-源代码

    虽然jQuery使用简单,但它毕竟是一门新的技术,与传统的JavaScript在性能与语法上存在诸多差异,需要相应的书籍来引导开发者们迅速而有效地掌握它,并能真正付诸实践。综观现在已经出版的中文类jQuery图书,不是...

    flex3的cookbook书籍完整版dpf(包含目录)

    在ActionScript中设置变量的作用域 1.10节.在ActionScript中创建组件 1.11节.使用事件冒泡机制 1.12节.使用代码隐藏模式分离MXML和ActionScript 1.13节.组件属性绑定 1.14节.使用自定义事件以及事件数据传递 1.15节....

Global site tag (gtag.js) - Google Analytics