非ES6让替代品

时间:2016-01-15 15:40:05

标签: javascript

我正在编写一个用于Wordpress的TinyMCE插件,我只是遇到了一个关于我如何处理事情的问题。基本上,我正在使用一个依赖于计数器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);
        }
    }
}

我知道let没有得到很好的支持,而且这是一个Wordpress插件,我无法真正控制目标受众使用的浏览器。

因此,在上述循环的情况下 - 如何使函数调用接收正确的数字(如let那样)?

1 个答案:

答案 0 :(得分:3)

而不是forEach循环,而是使用pmsb.config.forEach(function(config, i) { menu[i] = { text: config.title, onclick: function() { open_dialog(i); } } }); - 生成的回调将自动接收索引作为将在范围内正确绑定的参数:

pmsb.config[i]

如果(似乎很可能)存在从menu[i].map的一对一映射,您最好仍然使用forEach代替var menu = pmsb.config.map(function(config, i) { return { text: config.title, onclick: function() { open_dialog(i); } } });

{{1}}