使用自调用函数是变量独立的

Jon*_*com 4 javascript self-invoking-function self-executing-function

可能重复:
循环内部的Javascript闭包 - 简单实用的例子

我正在尝试使用自调用函数,以便每个函数都objects将返回不同的消息.

<script type="text/javascript">

    objects = {};

    for( var i = 0; i < 10; i++ ) {

        objects['function'+i] = function () {

            var text = ( function() { return "I am object " + i; } )();

            return text;

        };

    }

    for( var j = 0; j < 10; j++ ) {

        document.write( objects['function'+j]() + "<br>" );

    }

</script>
Run Code Online (Sandbox Code Playgroud)

到目前为止,上述结果如下:

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

我是对象10

如何使用自调用函数立即设置消息而不是与不稳定的事情联系在一起i

jAn*_*ndy 8

您需要传入迭代器变量,以便您的匿名函数可以将其存储在自己的激活对象/词法环境记录中(=在其自己的上下文对象中).

此外,您需要此匿名函数来包装所有访问点:

objects[ 'function' + i ] = function( i ) {

    var text = function() { return "I am object " + i; };

    return text;

}( i );
Run Code Online (Sandbox Code Playgroud)