我在codepen" http://codepen.io/jalabkhan/pen/bgNavG"中看到了这个。我对foreach循环如何工作感到困惑。还有什么是spark,i和array的价值。我是编程新手,所以请尽量让答案变得简单。谢谢大家!!
function draw() {
ctx.fillStyle = 'rgba(0,0,0, 0.1)';
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
sparks.forEach(function (spark, i, array) {
if (spark.opacity <= 0) {
array.splice(i, 1);
} else {
drawSpark(spark);
}
});
window.requestAnimationFrame(draw);
}
答案 0 :(得分:2)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
数组的forEach
方法允许您通过回调函数循环其值。换句话说,数组中的每个值依次传递给回调函数,以便进行处理。
forEach
自动将三个参数转发给回调:
答案 1 :(得分:1)
forEach iterates就像for循环一样抛出你的数组,但是因为你已经在回调函数中有了值,所以它更加可更新
在你的例子中:
function draw() {
ctx.fillStyle = 'rgba(0,0,0, 0.1)';
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
sparks.forEach(function (spark, i, array) {
/*spark is your current value in the array (like sparks[i] in a for loop), i is
you current index and array is sparks*/
if (spark.opacity <= 0) {
array.splice(i, 1);
} else {
drawSpark(spark);
}
});
window.requestAnimationFrame(draw);
}