javascript - 如何将变量作为字符串注入(inject)?

标签 javascript

<分区>

我正在循环中使用一个动态创建的函数。

for (var i = 0; i < 4; i++) {
        window["functiontest" + i] = function () { alert(i); }
}

它可以工作,但不是我想要的工作方式。因为当我这样做时,这意味着当 functiontest0 运行时它会发出警报“3”,因为它实际上会在循环完成添加到 i 时警报 var i

我想要的是以某种方式“硬编码”当前的 i 所以它实际上会警告“0”而不是“3”。我的意思是这样的:

window["functiontest" + i] = function () {
  // I need just the current state for `i` here and
  // not just the variable `i` - so for exampe I need
  // it as `i` literally put 0
}

有什么方法可以强制将结果写入“字符串”或其他内容吗?

感谢大家的帮助。抱歉,重复项在搜索时找不到任何内容。主要是因为我无法很好地解释它:-)

但我最终得到了这样的结果:

 for (var genfunc = 0; genfunc < 4; genfunc++) {

   if (genfunc == 0) { //left
       window["keyDown" + sys_curcontrols[genfunc]] = (function (unique) {
           return function () { window["sys_keyLeft" + unique] = -1; }
       })(nid);
   }

最佳答案

需要使用函数创建作用域的完美示例。

for (var i = 0; i < 4; i++) {
    window["functiontest" + i] = (function(index) {
        return function () { alert(index); }
    })(i);
}

关于javascript - 如何将变量作为字符串注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012270/

相关文章:

javascript - 需要 HTML5 输入,在提交时滚动到带有固定导航栏的输入

javascript - 状态更改后子组件不更新

javascript - 使用自定义函数扩展 should.js

javascript - Ionic 2 Facebook 风格页脚栏

javascript - 调整日历中的事件大小及其各自的事件名称后如何获取开始时间和结束时间?

JavaScript 条件语句不起作用

javascript - 向上滚动后如何修复标题下方的div?

javascript - watir ruby​​ 文件上传 windows 交互

javascript - Zeroclipboard-rails 不工作但没有错误

javascript - 关闭编译器: How to compile Chrome extension popup with background reference