Javascript 如何向父函数发送return语句?

Javascript 如何向父函数发送return语句?,javascript,for-loop,return,Javascript,For Loop,Return,不知道该怎么解释。我会举个例子试试 例如,我使用以下函数作为数组上For循环的缩写: function forEach(array, f) { var len = array.length, i; for (i = 0; i < len; i += 1) { f(i, array[i], len); } }; 替代品: function test(someArray) { forEach(someArray, function(i, value) { if

不知道该怎么解释。我会举个例子试试

例如,我使用以下函数作为数组上
For
循环的缩写:

function forEach(array, f) {
  var len = array.length, i;
  for (i = 0; i < len; i += 1) {
    f(i, array[i], len);
  }
};
替代品:

function test(someArray) {
  forEach(someArray, function(i, value) {
    if (value === 23) {
      return true;
    }
  });
  return false;
}

当达到23时,不返回函数
test
,并返回
true
,但在
forEach
之后继续执行语句,并返回
false
实现效果的方法有多种。这是一个简单的例子:

function test(someArray) {
  var result = false

  forEach(someArray, function(i, value) {
    if (value == 23) result = true;
  });

  return result;
}
请注意,
应与
=
进行比较。一个
=
用于赋值,它只替换

这里使用
forEach
的缺点是,当
23
时,循环不会停止。它将完成所有项目的交互,即使
23
是列表中的第一个项目。使用返回的
组合,只要找到
23
,迭代就会停止

如果这让您担心,那么有一种方法可以停止
forEach
,但是
返回方法更干净

您的
forEach()
函数需要返回一个值。否则,调用
forEach()
后,您当然会始终返回
false

函数forEach(数组,f){ var len=数组长度,i; 对于(i=0;i
首先,请使用与数组API中相同的样式进行回调。然后将回调用作检查,并将决定权留给调用函数使用信息

在这种情况下,如果元素等于
23
,回调将查找一个数字并返回
true
。调用函数在接收
true
并返回
true
时停止迭代。否则,迭代将继续进行,如果未找到,则返回值为
false

函数forEach(数组,f){ var len=array.length, 我 对于(i=0;i
。作为控制台包装{最大高度:100%!重要;顶部:0;}
请添加一些数据和所需结果。检查
23
可能会导致
true
23
,或
[23,23]
@NinaScholz的集合。这只是一个示例。我正在寻找一个通用的解决方案。我想也许有一种方法可以将return语句直接发送到父函数。“但可能没有这种事。”加夫格里夫,谢谢。修复了它。循环是否会因为
if
检查而变得更慢?您的解决方案是否会处理两个嵌套的
forEach
内部函数发送return语句的位置?这取决于
forEach
返回的内容。原始文件只使用回调进行迭代。在回调重新运行布尔值时,返回包含项的数组,如上述情况所示。因此,是的,它可以,这取决于您自己的
forEach
的位置和目的。
function test(someArray) {
  var result = false

  forEach(someArray, function(i, value) {
    if (value == 23) result = true;
  });

  return result;
}
function forEach(array, f) {
  var len = array.length, i;
  for (i = 0; i < len; i += 1) {
    if (f(i, array[i], len)) {
        return true;
    }
  }
  return false;
};

function test(someArray) {
  return forEach(someArray, function(i, value) {
    return value == 23;
  });
}