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 相关文章推荐
Google Dart编程语法和基本类型学习教程
Nov 27 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
Dec 16 Javascript
关于延迟加载JavaScript
May 05 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
微信小程序的部署方法步骤
Sep 04 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
微信小程序缓存支持二次开发封装实现解析
Dec 16 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 Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
详解爬虫被封的问题
2019/04/23 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python 随机按键模拟2小时
2020/12/30 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
如何整合JQuery和Prototype
2014/01/31 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
校庆接待方案
2014/03/18 职场文书
党员志愿者活动总结
2014/06/26 职场文书
会计工作能力自我评价
2015/03/05 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
MySQL 开窗函数
2022/02/15 MySQL