Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Scope_Inline Functions - Fatal编程技术网

Javascript变量在内联函数中的作用域

Javascript变量在内联函数中的作用域,javascript,variables,scope,inline-functions,Javascript,Variables,Scope,Inline Functions,为什么这不能像预期的那样起作用: $(函数(){ var数据=[[1],[3]]; var函数=[]; 对于(数据中的变量i){ var数据=数据[i]; functions.push(函数(){ $(“div”).append($(“”).text(“数据[0]=”+数据[0]+”,数据[“+i+”][0]=”+数据[i][0]); }); } for(函数中的变量i) 功能[i](); }); 这都是关于范围的。尝试改变 var data=datas[i]; functions.push(

为什么这不能像预期的那样起作用:

$(函数(){
var数据=[[1],[3]];
var函数=[];
对于(数据中的变量i){
var数据=数据[i];
functions.push(函数(){
$(“div”).append($(“

”).text(“数据[0]=”+数据[0]+”,数据[“+i+”][0]=”+数据[i][0]); }); } for(函数中的变量i) 功能[i](); });


这都是关于范围的。尝试改变

var data=datas[i];
functions.push(function(){
    $("div").append($("<p/>").text("data[0]="+data[0]+", datas["+i+"][0]="+datas[i][0]));
});
var数据=数据[i];
functions.push(函数(){
$(“div”).append($(“

”).text(“数据[0]=”+数据[0]+”,数据[“+i+”][0]=”+数据[i][0]); });

(功能(数据){
functions.push(函数(){
$(“div”).append($(“

”).text(“数据[0]=”+数据[0]+”,数据[“+i+”][0]=”+数据[i][0]); }); })(数据[i]);

数据
的for循环范围内值已更改。这就是为什么调用
函数
时,它们使用上次修改的
数据值

这就是为什么我们创建了一个新的范围,其中,
data
function
以友好的方式生活在一起。

问题出在哪里?我希望数据[0]=1,数据[0][0]=1,我得到数据[0]=3,数据[0][0]=1为什么?很抱歉,这是我的错误。如果你有答案,把它作为答案发布,不要把它包括在你的问题中,请选择一个在重复标志中提到的带有.bind()的解决方案,以某种方式更干净,无论上述方法如何有效,无论如何,问题都将以重复的形式结束
(function (data) {
    functions.push(function(){
        $("div").append($("<p/>").text("data[0]="+data[0]+", datas["+i+"][0]="+datas[i][0]));
    });
})(datas[i]);