码迷,mamicode.com
首页 > 编程语言 > 详细

1、JavaScript高级之函数作用域链

时间:2015-02-09 16:05:37      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:javascript   高级   作用域链   

作用域链

JavaScript的每个函数function都有自己的作用域,使用Active Object(简称AO)活动对象来保存,在相互嵌套的函数中形成了作用域链,如图:

技术分享

作用域链就是从里到外的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作用域链后,在函数里面使用频率较高的外部变量,最好先将外部变量保存为局部变量后,再进行操作,这样就大大减少通过作用域链查找变量的时间。



1、JavaScript高级之函数作用域链

标签:javascript   高级   作用域链   

原文地址:http://blog.csdn.net/guixuecheng/article/details/43670323

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!