我是Javascript的新手,并编写了以下jQuery代码:
function updateItems() {
var now = Math.round((new Date()).getTime() / 1000);
$(".something").each(function() {
$(this).html(now.toString());
});
}
updateItems();
Run Code Online (Sandbox Code Playgroud)
为什么这样做?有人可能认为now无法从函数内部访问.我想我可以运行一些测试来看看如果我尝试now从函数内部进行修改会发生什么,如果我each()在那之后再运行,等等.但是基本了解范围如何在这里工作并且通常在这样的Javascript情况下将是非常感激.
此外,这种类型的功能是否准确地称为"动态功能"还是有更好的名称?
使用时function() { ... },您可以创建技术上称为闭包的东西.它们可以有效地捕获封闭范围内的所有内容.
如果now在闭包中使用,则会获得now 执行闭包时的值,并且(可能)不是创建它时的值.
请注意,这里的封闭范围是外部函数的范围,而不是外部块的范围,例如,如果要在循环中创建闭包,则可能需要格外小心.