javascript - 以编程方式设置变量的名称

标签 javascript

是否有编写以下 100 个作业的快捷方式?

variable_1 = 1;
variable_2 = 2;
variable_3 = 3;

...

variable_100 = 100;

我试过了

for(var i = 1; i <= 100; i++) {
    variable_ + i = i;
}

但我收到错误消息“分配中的左侧无效”。有什么想法吗?

最佳答案

这里有几种方法:

方法一:使用eval

这是最直接的方法:

for(var i = 1; i <= 100; i++) {
  eval("var variable_" + i + " = " + i);
}
variable_1; // => 1

上述方法的免责声明:我认为这个问题不适合使用eval。如果您确实使用了eval,则您永远不应允许用户输入进入您正在eval的内容,否则您可能会打开您的站点以确保安全风险。这个错误是人们说 eval 是邪恶的主要原因。

方法二:使用动态生成的对象属性

这是一个好得多的方法:

// If you want these variables to be global, then use `window` (if you're 
// in a browser) instead of your own object.
var obj = {};
for(var i = 1; i <= 100; i++) {
  obj["variable_" + i] = i;
}
obj.variable_1; // => 1

关于评论中关于使用窗口创建全局变量的说明:我不建议这样做,因为这是污染全局范围并无意中踩到变量的快速方法。

方法三:使用数组

David 建议使用数组。这是另一个好主意,并且根据您要尝试执行的操作,可能是首选:

var arr = [];
for(var i = 1; i <= 100; i++) {
  arr.push(i);
}
arr[0]; // => 1

关于javascript - 以编程方式设置变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525221/

相关文章:

javascript - 在leaft.draw中,使用事件draw :deletestop,如何获取我想要删除的特定图层

javascript - 即使引用后也无法访问外部 Jscript 文件?

Javascript 密码正则表达式

仅包含文本的 JavaScript/JQuery 单选按钮

javascript - jQuery 动画的大图像移动波涛汹涌

javascript - 如何按值(value)对产品进行排序?

javascript - 获取标签的innerHtml文本不起作用,但innerText可以工作

javascript - 在 React FixedDataTable 上创建自定义表格单元格内容

javascript - Express.js 应用程序错误导致 Route.post() 需要回调函数但出现 [object Undefined] 错误

javascript - 测试 Xpath 对象是否为 null/未定义