Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript闭包-无法保存“的副本”;计数';在生命函数中_Javascript_Function_Scope_Closures_Iife - Fatal编程技术网

Javascript闭包-无法保存“的副本”;计数';在生命函数中

Javascript闭包-无法保存“的副本”;计数';在生命函数中,javascript,function,scope,closures,iife,Javascript,Function,Scope,Closures,Iife,因此,我有一个名为count的全局变量,它在两个函数声明之间从0变为4(请参见myFuncs数组) 我想创建一个闭包,并为第一个函数保存计数0的副本,为第二个函数保存计数4的副本 不知何故,尽管我正在使用IIFE(立即调用的函数表达式)创建新的词法作用域并将count的副本保存为(j),但它们仍然都指向count=4,因此在执行函数时,第一个和第二个函数都会在我预期的情况下打印两次“My value:4”: “我的值:0” “我的价值:4” 实际上,您并没有使用该变量创建闭包,因为您在函数中引用

因此,我有一个名为count的全局变量,它在两个函数声明之间从0变为4(请参见myFuncs数组)

我想创建一个闭包,并为第一个函数保存计数0的副本,为第二个函数保存计数4的副本

不知何故,尽管我正在使用IIFE(立即调用的函数表达式)创建新的词法作用域并将count的副本保存为(j),但它们仍然都指向count=4,因此在执行函数时,第一个和第二个函数都会在我预期的情况下打印两次“My value:4”:

“我的值:0” “我的价值:4”


实际上,您并没有使用该变量创建闭包,因为您在函数中引用了它。需要传入它,并且需要使用传入的值

        myFuncs[0] = function(j){
            return function(){
                console.log("My value: " + j);
            };
        }(count);

通过计数,如
}(计数)并接受它,就像
(函数(count){
我认为count可以通过作用域链上的嵌套作用域访问,这与将其作为参数传递是一样的?或者这是一种通过引用传递与值类型的东西?
        myFuncs[0] = function(j){
            return function(){
                console.log("My value: " + j);
            };
        }(count);