关闭 - JS Fiddle& amp;的不同行为在简单的HTML文件上

时间:2016-08-18 08:30:58

标签: javascript scope closures global-variables jsfiddle

我正在写一个简单的例子来演示闭包。当我在JS Fiddle上写这个时,我可以看到在控制台中正确传递了闭包值。如果我尝试制作HTML页面并在控制台中查看,则相同。关闭通过无法看到。对于这两种情况,我使用的是Chrome。当代码相同且浏览器相同时,为什么会出现不同的行为?魔术在哪里?

HTML

<script> 
var a = 10; 
var addTo = function(){
var b = 20;
return (a + b); 
}
console.dir(addTo);
</script> 

的jsfiddle

的index.html

1 个答案:

答案 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属于全局范围。