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 相关文章推荐
jQuery中triggerHandler()方法用法实例
Jan 19 Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
Dec 17 Javascript
JavaScript轻松创建级联函数的方法示例
Feb 10 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 Javascript
微信小程序动态显示项目倒计时
Jun 20 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
Sep 27 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 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核心代码分析require和include的区别
2011/01/02 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
教育学习自我评价
2014/02/03 职场文书
党委班子剖析材料
2014/08/21 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
Python采集股票数据并制作可视化柱状图
2022/04/04 Python