【问题标题】:Create variables with for loop [duplicate]使用 for 循环创建变量 [重复]
【发布时间】:2019-08-14 17:23:17
【问题描述】:

我正在尝试创建 20 个存储在变量中的函数。每个人将特定数量的数字添加到另一个数量。这是一个例子:

function creaSuma(x){
    return function(y){
        return x + y;
    }
}

for(let i=1; i<21; i++){
    add+1=creaSuma(i); //this doesn't work. How would you change it?
}

在这种情况下:

console.log(add15(10));

输出应该是 25

那么,如何在不创建数组的情况下创建这 20 个变量? (我试过了,它有效) 谢谢,只是出于好奇。

【问题讨论】:

  • 使用一个对象,让它们成为对象的动态属性/字段。
  • 哦,不错的解决方案。谢谢
  • 为什么需要这些功能?保留一些闭包通常是没有意义的。为什么不add(15, 10)

标签: javascript variables closures


【解决方案1】:

试试下面的

function creaSuma(x){
    return function(y){
        return x + y;
    }
}

for(let i=1; i<21; i++){
    window['add' + i] = creaSuma(i); //this doesn't work. How would you change it?
}
console.log(add15(10));

将输出 25

我使用 window 进行动态变量命名,因为它引用了您正在使用的所有全局变量和全局函数。

您也可以使用相同的方法,但使用自定义对象。

【讨论】:

  • 这看起来就像我在评论中已经提到的解决方案:)
  • 不适用于我使用全局 window 对象的第一部分,因此它将被存储为普通变量。 :)
【解决方案2】:

正如我在对原始帖子的评论中提到的,使用一个对象并让它们成为对象的动态属性/字段。

这是您修改后的代码:

function creaSuma(x) {
    return function (y) {
        return x + y;
    }
}
var x = function () {

}
for (let i = 1; i < 21; i++) {
    x['add' + i] = creaSuma(i); //this doesn't work. How would you change it?
}

console.log(x.add15(10));

【讨论】:

  • 谢谢你的回答!!!
猜你喜欢
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 2012-01-21
  • 2020-04-05
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多