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 相关文章推荐
node.js WEB开发中图片验证码的实现方法
Jun 03 Javascript
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
js转html实体的方法
Sep 27 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 Javascript
浅谈bootstrap layer.open中end的使用方法
Sep 12 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
Nov 12 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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
python从入门到精通(DAY 3)
2015/12/20 Python
Python模块文件结构代码详解
2018/02/03 Python
Python高级用法总结
2018/05/26 Python
django的model操作汇整详解
2019/07/26 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
晚会邀请函范文
2014/01/24 职场文书
优良学风班申请材料
2014/02/13 职场文书
工程资料员岗位职责
2014/03/10 职场文书
毕业生就业协议书
2014/04/11 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
查摆问题整改措施
2014/10/24 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python