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>
方式:把要查看的函数设置成一个对象的属性,dir这个对象,展开函数即可看到scope。
联想:当匿名函数里只执行f2函数时,scope下只有一个closure和一个globle;但匿名函数里执行console语句时,scope下有三个closure和一个globle;所以浏览器对于外部引用闭包内数据的情况,会优化只存储被引用的数据。
个人理解:闭包问题即作用域嵌套的问题。