Javascript 非ES6 let替代方案
我正在为Wordpress编写一个TinyMCE插件,我刚刚遇到了一个关于如何处理事情的小问题。基本上,我使用的循环依赖于计数器Javascript 非ES6 let替代方案,javascript,Javascript,我正在为Wordpress编写一个TinyMCE插件,我刚刚遇到了一个关于如何处理事情的小问题。基本上,我使用的循环依赖于计数器I。循环负责构建一个包含TinyMce细节的数组。其中之一是传递给i计数器的函数调用 但当然,当点击实际注册时,计数器总是处于最大值。我通过在循环中使用let暂时解决了这个问题。以下是循环: for(let i = 0; i <= pmsb.config.length - 1; i++) { menu[i] = { text: pmsb.c
I
。循环负责构建一个包含TinyMce细节的数组。其中之一是传递给i
计数器的函数调用
但当然,当点击实际注册时,计数器总是处于最大值。我通过在循环中使用let
暂时解决了这个问题。以下是循环:
for(let i = 0; i <= pmsb.config.length - 1; i++) {
menu[i] = {
text: pmsb.config[i].title,
onclick: function() {
open_dialog(i);
}
}
}
for(让i=0;i而不是for
循环,改用forEach
——结果回调将自动接收索引作为参数,该参数将在范围内正确绑定:
pmsb.config.forEach(function(config, i) {
menu[i] = {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
如果(看起来很可能)有一个从pmsb.config[i]
到菜单[i]
的一对一映射,您最好还是使用.map
而不是forEach
:
var menu = pmsb.config.map(function(config, i) {
return {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
与其使用for
循环,不如改用forEach
——结果回调将自动接收索引作为参数,该参数将在范围内正确绑定:
pmsb.config.forEach(function(config, i) {
menu[i] = {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
如果(看起来很可能)有一个从pmsb.config[i]
到菜单[i]
的一对一映射,您最好还是使用.map
而不是forEach
:
var menu = pmsb.config.map(function(config, i) {
return {
text: config.title,
onclick: function() {
open_dialog(i);
}
}
});
@EricLease:这将有相同的问题。for
循环没有作用域。@EricLease:这将有相同的问题。for
循环没有作用域。