关闭 - JS Fiddle 和简单 HTML 文件的不同行为

Closure - different behavior on JS Fiddle & on simple HTML file

我正在写一个简单的例子来演示闭包。当我在 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

当你将这段代码粘贴到 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 属于全局范围。