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给图片添加鼠标经过时的边框效果
Nov 12 Javascript
通过Jquery的Ajax方法读取将table转换为Json
May 31 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
详解JS面向对象编程
Jan 24 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
Jun 22 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
Apr 13 Javascript
JS加密插件CryptoJS实现的Base64加密示例
Aug 16 Javascript
JavaScript常用工具方法封装
Feb 12 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 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生成随机颜色方法汇总
2014/12/03 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python中数据爬虫requests库使用方法详解
2018/02/11 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
Spy++的使用方法及下载教程
2021/01/29 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
幼儿园托班开学寄语
2014/01/18 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
小学教师岗位职责
2015/04/02 职场文书
毕业典礼主持词
2015/06/29 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL