chrome控制台查看函数作用域

使用chrome控制台打断点可以看到函数执行时候的scope这是很早之前就知道的。

但使用console.dir也可以查看到函数的scope却是今天调试时的意外收获。

调试代码:

<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <title>test</title>
</head>
<body>
<script type="text/javascript">
var t1=1;
var a=function a(){
    var t2=2;
    var f2=function(){};
    var b=function b(){
        var t3=3;
        var c=function c(){
            var t4=4;
            return function(){
                var t5=5;
                //console.log(t1,t2,t3,t4);
                f2();
            };
        }
        return c();
    };
    return b();
};
var p=a();
var q=function(){};
q.prototype = p;
console.dir(q);
</script>
</body>
</html>
View Code

方式:把要查看的函数设置成一个对象的属性,dir这个对象,展开函数即可看到scope。

联想:当匿名函数里只执行f2函数时,scope下只有一个closure和一个globle;但匿名函数里执行console语句时,scope下有三个closure和一个globle;所以浏览器对于外部引用闭包内数据的情况,会优化只存储被引用的数据。

个人理解:闭包问题即作用域嵌套的问题。

posted @ 2013-06-20 20:01  snadn  阅读(1416)  评论(1编辑  收藏  举报