首页 > 解决方案 > 如何将数组的浅拷贝传递给函数

问题描述

我想根据我按下的按钮在 console.log 中获得不同的数组片段,但是无论我最终按下哪个按钮,我总是得到数组的最后 20 个元素。我怎样才能让它按预期运行?

for (var i = 0; i < array.length; i++) {
      var b;
      var NewArr = [];
      if (i % 20 == 0) {
        NewArr = array.slice(i, i + 20);
        b = createButton(i + "-" + (i + 20), NewArr);
        b.position(x, y + i * 1.5);
        b.mousePressed(function () {
          console.log(NewArr);
        });
      }
}

标签: javascriptarraysfunctionp5.jsinteractive

解决方案


使用let而不是var.

var声明被提升到当前函数范围的顶部(如果您想阅读更多,还有许多其他关于 JS 提升的答案/wiki 文章),即使您在for循环中声明它也是如此。


推荐阅读