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