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;
});
}