关闭 - 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
属于全局范围。
我正在写一个简单的例子来演示闭包。当我在 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
属于全局范围。