我正在编写一个简单的示例来演示关闭。当我在 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
属于全局范围。
关于javascript - 闭包 - JS Fiddle 和简单 HTML 文件上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013379/