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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
window.name代替cookie的实现代码
Nov 28 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
详解Webwork中Action 调用的方法
Feb 02 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
微信小程序 简易计算器实现代码实例
Sep 02 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 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
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
js变量提升深入理解
2016/09/16 Javascript
实例解析Array和String方法
2016/12/14 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
数组越界问题
2015/10/21 面试题
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
产品销售员岗位职责
2013/12/18 职场文书
元旦联欢会主持词
2014/03/26 职场文书
投标担保书范文
2014/04/02 职场文书
党在我心中演讲稿
2014/09/02 职场文书
擅自离岗检讨书
2014/09/12 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis