Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 JS-将函数推入数组并命名它们_Javascript_Arrays_Function_For Loop - Fatal编程技术网

Javascript JS-将函数推入数组并命名它们

Javascript JS-将函数推入数组并命名它们,javascript,arrays,function,for-loop,Javascript,Arrays,Function,For Loop,我正在尝试将函数添加到数组中。这些必须命名为“opdracht1”到“opdracht10”。 不过,我不知道如何给它取个名字 var opdrachtArray=[]; 对于(i=0;i

我正在尝试将函数添加到数组中。这些必须命名为“opdracht1”到“opdracht10”。 不过,我不知道如何给它取个名字

var opdrachtArray=[];
对于(i=0;i<10;i++){
push(函数(){func(i);});

}
如果要将每个函数分配给一个名称,请使用字典,而不是数组:

var opdrachtDict={};
对于(i=0;i<10;i++){
opdrachtDict[“opdracht”+i]=函数绑定(null,i);
}
函数func(i){
警报(一);
}

opdrachtDict[“opdracht3”]()//好的,让我们打电话给它,看看你是否认为这仍然是一个错误的答案;)通过将函数放置在
窗口
对象上命名函数:

for (i = 0; i < 10; i++) { 
    f = function() { func(i); }); // but see below
    window['opdracht' + i] = f
    opdrachtArray.push(f);
}
然后


您可以将名称和函数存储在对象中,并将每个对象推送到数组中:

var opdrachtArray = [];

for (i = 0; i < 10; i++) { 
    var name = 'opdracht' + (i+1);
    opdrachtArray.push({name : name, callback : function() {func(i); }});
}
var opdrachtArray=[];
对于(i=0;i<10;i++){
变量名称='opdracht'+(i+1);
push({name:name,callback:function(){func(i);}});
}

在全局范围内定义的函数最终成为
self
/
窗口的属性。i、 e:

function mr_function(){return 5;}
self["mr_function"];
window["mr_function"];

这两个属性(self
/
窗口的属性)都引用了我们定义的函数。如果你小心的话,我想你可以这样命名你的函数。或者,如果您不想使它们成为全局对象,请将它们指定给其他对象的属性。

为什么必须命名它们?因为我将使用每个函数作为我所做操作的单独赋值。这让我可以分别编辑它们并将它们分开。这闻起来像是XY问题。。。但可能需要使用键/值对象,而不是数组。这些函数有名称opdrachtArray[0..9]。“未删减的标记[“@line 3在opdrachtArray之后删除点,您就完成了:)“这些必须命名为'opdracht1'到'opdracht10'。”但是在这里,它们不是这样命名的,而是保存在一个字典中,并以此为键。这个公认的解决方案也没有修复OP代码中的一个重要错误,即所有十个函数都将调用
func
,值为10。您的代码似乎给出了一个错误。“未捕获的TypeError:未定义的不是函数”@OriginDutch:无法重现该错误,也无法想象它会从何而来。编辑后效果会更好;一个[新的/不同的]程序员很容易错过表达式中的赋值。但我仍然不确定他们OP是否需要“在窗口中命名”函数。这个答案也回答了OP将遇到的“下一个”问题。
for (i = 0; i < 10; i++) { 
    (function(i) {
        var f = function() { func(i); };
        window['opdracht' + i] = f
        opdrachtArray.push(f);
    }(i));
}
for (i = 0; i < 10; i++) { 
    f = func.bind(null, i);
    window['opdracht' + i] = f;
    opdrachtArray.push(f);
}
var opdrachtArray = [];

for (i = 0; i < 10; i++) { 
    var name = 'opdracht' + (i+1);
    opdrachtArray.push({name : name, callback : function() {func(i); }});
}
function mr_function(){return 5;}
self["mr_function"];
window["mr_function"];