【发布时间】:2018-03-13 09:25:17
【问题描述】:
我提出了 2 个关闭的例子。第一个工作正常,而第二个不行。现在,我不明白为什么第二种情况会失败。它仍然调用匿名函数 3 次,并且必须也给出相同的关闭结果。
示例 1:(工作正常)
<html>
<head></head>
<body>
<script>
var alpha1 = (function alpha(){
var a = 5;
function beta(){
a = a + 5;
alert(a);
return a;
}
return beta;
})();
alpha1();
alpha1();
alpha1();
</script>
</body>
</html>
示例 2:(不起作用且没有错误)
<html>
<head></head>
<body>
<script>
var alpha1 = function alpha(){
var a = 5;
function beta(){
a = a + 5;
alert(a);
return a;
}
return beta;
};
alpha1();
alpha1();
alpha1();
</script>
</body>
</html>
现在,在第二个示例中,我仍然调用函数 alpha1 3 次;虽然我没有将它作为 IIFE 启动(在第一个示例中),但我仍然手动调用它,它必须作为闭包工作。不应该吗?
【问题讨论】:
标签: javascript function scope closures