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 相关文章推荐
js的写法基础分析
Jan 17 Javascript
Javascript中封装window.open解决不兼容问题
Sep 28 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
js使用心得分享
Jan 13 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
Aug 15 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
微信小程序block的使用教程
Apr 01 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
js实现搜索栏效果
Nov 16 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 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 动态执行带有参数的类方法
2009/04/10 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
总结Python编程中三条常用的技巧
2015/05/11 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
应届生.NET方向面试题
2015/05/23 面试题
C# .NET面试题
2015/11/28 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
4s客服专员岗位职责
2013/12/01 职场文书
关于逃课的检讨书
2014/01/23 职场文书
司机职责范本
2014/03/08 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
办公室规章制度范本
2015/08/04 职场文书