if语句中的返回代码未运行,但是如果将其更改为return变量,则它正在运行。 (香草Javascript)

时间:2018-07-20 07:16:30

标签: javascript

我具有正在创建的游戏的功能:

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?

1 个答案:

答案 0 :(得分:1)

forEach会忽略您返回的任何内容-从中返回的return不会脱离forEach并从外部函数返回,它只是停止当前迭代并继续进入下一个迭代。

您可以改用.find

var getFireableLaser = function() {
  return lasers.find(aLaser => aLaser.y <= -120);
}

(尽管找不到匹配项,.find返回 undefined 而不是null)