为了账号安全,请及时绑定邮箱和手机立即绑定

无论如何我可以将变量设置为一系列数字并将其包含在函数中吗?

无论如何我可以将变量设置为一系列数字并将其包含在函数中吗?

慕侠2389804 2022-07-01 16:03:31
onEvent("pb" + 1, "click", function() {console.log(("pb" + 1) + " was clicked!");});onEvent("pb" + 2, "click", function() {console.log(("pb" + 2) + " was clicked!");});onEvent("pb" + 3, "click", function() {console.log(("pb" + 3) + " was clicked!");});onEvent("pb" + 4, "click", function() {console.log(("pb" + 4) + " was clicked!");});我必须编写其中的 80 个函数......我想这样做,所以我可以使用一个变量来包含 1-80 的范围: onEvent("pb" + [1, 80], "click", function() { console.log(("pb" + [1, 80]) + " was clicked!"); });我不确定是否可以将变量定义为一组单独的数字。
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

使用循环:


for (let i = 1; i <= 80; i++) {

    onEvent("pb" + i, "click", function()

        console.log("pb" + i + " was clicked");

    })

}

确保使用let而不是var,以便为每次迭代获得一个新的绑定。

查看完整回答
反对 回复 2022-07-01
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

不幸的是,范围迭代器还没有内置。但它们制作起来很简单(使用循环):


function* range(start, end) {

    for (let i = start; i <= end; i++) {

        yield i

    }

}

然后,您可以这样做:


for (let value of range(1,80)){

  console.log(value)

}

或这个:


range(1,80).forEach(value => console.log(value))

为什么这样做而不仅仅是一个循环?好吧,取决于,有时循环更有意义。但这里有一些可能会更好的原因:

  • 更多意图揭示代码:拥有一个名为 range 的函数会告诉您您打算做什么:使用一系列值

  • 更好的提取:假设您后来发现循环效率低下(不太可能,但为了举例)。然后,您可以在range处更改代码,并在各处进行修复。或者,也许您想处理字母和数字的范围。现在您可以在一个地方进行更改,并且它在任何地方都有效。

  • 同样,假设您需要在许多地方使用范围。在任何地方都使用循环意味着您必须在使用该循环的每个地方都避免拼写错误。如果改为使用range,则可以避免该问题。


查看完整回答
反对 回复 2022-07-01
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信