我具有正在创建的游戏的功能:
var getFireableLaser = function() {
var result = null;
lasers.forEach(function(aLaser) {
if(aLaser.y <= -120) {
result = aLaser;
}
});
return(result);
}
它通过一系列“激光”对象,并在满足if条件时返回一个,但是如果我编写如下代码:
var getFireableLaser = function() {
lasers.forEach(function(aLaser) {
if(aLaser.y <= -120) {
return(aLaser);
}
});
return(null);
}
该函数仅返回null?为什么当我做var laser = getFireableLaser();时在另一个函数表达式中,当我console.log时,laser为null吗? (在该特定其他功能中);
当我刚好在返回console.log(aLaser)时,它显示了激光对象。 那么为什么返回的对象为null并保存为null?
答案 0 :(得分:1)
forEach
会忽略您返回的任何内容-从中返回的return
不会脱离forEach
并从外部函数返回,它只是停止当前迭代并继续进入下一个迭代。
您可以改用.find
:
var getFireableLaser = function() {
return lasers.find(aLaser => aLaser.y <= -120);
}
(尽管找不到匹配项,.find
返回 undefined 而不是null)