我正在写一个简单的例子来演示闭包。当我在JS Fiddle上写这个时,我可以看到在控制台中正确传递了闭包值。如果我尝试制作HTML页面并在控制台中查看,则相同。关闭通过无法看到。对于这两种情况,我使用的是Chrome。当代码相同且浏览器相同时,为什么会出现不同的行为?魔术在哪里?
<script>
var a = 10;
var addTo = function(){
var b = 20;
return (a + b);
}
console.dir(addTo);
</script>
答案 0 :(得分:1)
将此代码粘贴到JS Fiddle上时,<script>
标记的内容实际上就是这样:
//<![CDATA[
window.onload=function(){
var a = 10;
var addTo = function(){
var b = 20;
return (a + b);
}
console.dir(addTo);
}//]]>
这会创建另一个闭包,a
属于该闭包。
但是,如果在简单的HTML文件中运行此代码,则没有闭包,a
属于全局范围。