JavaScript函数作用域链分析


Posted in Javascript onFebruary 13, 2015

本文实例分析了JavaScript函数作用域链。分享给大家供大家参考。具体分析如下:

作用域链:

JavaScript的每个函数function都有自己的作用域,使用Active Object(简称AO)活动对象来保存,在相互嵌套的函数中形成了作用域链,如下图所示:

JavaScript函数作用域链分析

作用域链就是从里到外的AO链

变量的寻找:

函数fn3中使用的变量,如在fn3作用域内寻找不到,则往外层fn2作用域寻找,以此类推,直到全局对象window

代码演示如下:

var c = 5; 
function t1(){ 
  var d = 6; 
  function t2(){ 
    var e = 7; 
    var d = 3;
 //如果在这里声明的var d = 3,
 //那么函数就不在向外寻找变量d,输出的值为15 
    console.log(c+d+e); 
  } 
  t2(); 
} 
t1();

了解了JavaScript作用域链后,在函数里面使用频率较高的外部变量,最好先将外部变量保存为局部变量后,再进行操作,这样就大大减少通过作用域链查找变量的时间。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
原生js写的放大镜效果
Aug 22 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
函数四种调用模式以及其中的this指向
Jan 16 Javascript
angular学习之从零搭建一个angular4.0项目
Jul 10 Javascript
浅谈Vue父子组件和非父子组件传值问题
Aug 22 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
JavaScript匿名函数用法分析
Feb 13 #Javascript
js实现进度条的方法
Feb 13 #Javascript
动态加载js的方法汇总
Feb 13 #Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 #Javascript
jQuery向后台传入json格式数据的方法
Feb 13 #Javascript
浅谈轻量级js模板引擎simplite
Feb 13 #Javascript
js实现拖拽效果
Feb 12 #Javascript
You might like
php 多个submit提交表单 处理方法
2009/07/07 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
windows下python和pip安装教程
2018/05/25 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
python链表类中获取元素实例方法
2021/02/23 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
4s店总经理岗位职责
2013/12/31 职场文书
幼儿园小班评语
2014/04/18 职场文书
法定授权委托证明书
2014/09/27 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书