我有下面的代码,但我得到的错误是 "Cannot find name 'leaf'"。
this.leaves.forEach(this.leafFloat(leaf));
private leafFloat(leaf: Phaser.Physics.Arcade.Sprite): () => void {
return function() {
leaf.setVelocityX(-50);
}
}
但我得到了 "无法找到'叶子'这个名字 "的错误信息。
如果我把回调做成一个匿名函数,就像这样。
this.leaves.forEach((leaf) => { leaf.setVelocityX(-50)});
就能如期运行,为什么会这样?
这是因为在第一行中,你把变量 leaf
,这在之前没有定义。
this.leaves.forEach(this.leafFloat(leaf));
// ^- here
然而,在lambda函数中,你调用的参数是 leaf
,这是正确的定义。
this.leaves.forEach((leaf) => { leaf.setVelocityX(-50)});
// ^-defined ^-called