动态函数的变量范围?

dav*_*mer 0 javascript jquery

我是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情况下将是非常感激.

此外,这种类型的功能是否准确地称为"动态功能"还是有更好的名称?

F.X*_*.X. 5

使用时function() { ... },您可以创建技术上称为闭包的东西.它们可以有效地捕获封闭范围内的所有内容.

如果now在闭包中使用,则会获得now 执行闭包时的值,并且(可能)不是创建它时的值.

请注意,这里的封闭范围外部函数的范围,而不是外部块的范围,例如,如果要在循环中创建闭包,则可能需要格外小心.

  • 完善.当我看到你的答案时,我正打算写同样的东西. (2认同)