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实现分割提取页面所需内容
May 09 Javascript
JavaScript全局函数使用简单说明
Mar 11 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
javascript动态控制服务器控件实例
Sep 05 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
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模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
python正则表达式re模块详细介绍
2014/05/29 Python
在Python中使用成员运算符的示例
2015/05/13 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Django密码系统实现过程详解
2019/07/19 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
趣味运动会活动方案
2014/02/12 职场文书
党组织公开承诺书
2014/03/29 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python