如何在子函数中返回一个值?

时间:2016-04-05 07:38:31

标签: javascript function closures

我想在找到元素后立即返回第一个函数。

这只是一个例子:



function foo(arr) {
    arr.forEach(function (e) {
      if (e == 4)
        return true // this obviously does not return the foo function
    });
    return false
}




3 个答案:

答案 0 :(得分:4)

仅仅因为我们有像forEach这样的花哨功能,它并不意味着您在需要时仍然无法使用普通for循环:

function foo(arr) {
    for (var x = 0; x < arr.length; x++) {
        if (arr[x] == 4)
            return true;
    }
    return false;
}

答案 1 :(得分:1)

使用Array#some()

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

     

some()为数组中的每个元素执行一次callback函数,直到找到callback返回true值的一个元素。如果找到这样的元素,some()会立即返回true。否则,some()会返回false。仅为已分配值的数组的索引调用callback;对于已删除或从未分配过值的索引,不会调用它。

&#13;
&#13;
function foo(arr) {
    return arr.some(function (e) {
        return e == 4;
    });
}

document.write(foo([1, 2, 3, 4]) + '<br>');
document.write(foo([1, 2, 3, 42]) + '<br>');
&#13;
&#13;
&#13;

答案 2 :(得分:1)

或者,如果您不想简单地选择老派foo,则可以在for函数的范围内设置变量。

function foo(arr) {
    var result = false;
    arr.forEach(function (e) {
      if (e == 4)
        result = true;
    });
    return result
}