Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 非ES6 let替代方案_Javascript - Fatal编程技术网

Javascript 非ES6 let替代方案

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

我正在为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);
        }
    }
}

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
循环没有作用域。