转链式作用域

作用域链
有了JavaScript的作用域的划分,那么可以将JavaScript的访问作用域连成一个链式树状结构.
JavaScript的作用域链一旦能清晰的了解,那么对于JavaScript的变量与闭包就是非常清晰的了.
下面采用绘图的办法,绘制作用域链

    var num = 10;
    var func1 = function() {
        var num = 20;
        var func2 = function() {
            var num = 30;
            alert(num);
        };
        func2();
    };
    var func2 = function() {
        var num = 20;
        var func3 = function() {
            alert(num);
        };
        func3();
    };
    func1();
    func2();

.

 

有了这个作用域链的图,那么就可以非常清晰的了解访问变量是如何进行的:
在需要使用变量时,首先在当前的链上寻找变量,如果找到就直接使用,不会
向上再找;如果没有找到,那么就向上一级作用域链寻找,直到0级作用域链.


如果能非常清晰的确定变量所属的作用域链的级别,那么在分析JavaScript
代码与使用闭包等高级JavaScript特性的时候就会非常容易;

 

posted @ 2015-03-24 14:59  天棚  阅读(109)  评论(0)    收藏  举报