javascript - 如何将数组的浅拷贝传递给函数
问题描述
我想根据我按下的按钮在 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);
});
}
}
解决方案
使用let
而不是var
.
var
声明被提升到当前函数范围的顶部(如果您想阅读更多,还有许多其他关于 JS 提升的答案/wiki 文章),即使您在for
循环中声明它也是如此。
推荐阅读
- jdbc - jdbc数据独立而不使用hibernate api?
- javascript - 正则表达式 - 特定字符串内的匹配模式
- sql-server - 在表中的分区之间移动数据
- php - 在 laravel 中仅输出 view-html 文件的一部分
- python - 在大量 .mat 文件上训练 Keras 模型
- excel - ComboBox.MatchEntry 属性如何具有 `fmMatchEntryComplete` 值但能够覆盖自动完成功能?
- jquery - 如何删除附加'div' jquery codeigniter
- unity3d - AssetBundle 中的整个级别
- php - laravel 关系只得到第二个关系
- linux - IBM Watson Studio 安装问题卡在“预安装脚本超时,重试”