我在这里阅读了一篇关于创建刮板的博客文章,node.js
并遇到了一些有趣的 javascript,我无法完全理解。这正是我想在我的脚本中使用的东西,但作为一个新手,我不想在不知道它们首先做什么的情况下盲目地复制和粘贴代码。
在这个函数中:
function main()
{
var a = 1;
var f = function() { console.log(a); }
a = 2;
f();
}
main();
输出是2
, 因为在被调用var a
之前改变了。f()
但是,在这个函数中
function main()
{
var a = 1;
var f = ( function(a) { return function() { console.log(a); } } )(a);
a = 2;
f();
}
main();
输出是1
。上面链接的博客文章中对此进行了相当详细的解释,但我一生都无法弄清楚为什么会这样。
该帖子提到了var a
传递给函数的范围 - 任何人都可以详细说明这意味着什么?为什么有必要(a)
在函数的末尾有final var f
?