js函数始终返回null

时间:2015-02-23 05:51:45

标签: javascript

此函数始终返回null ...

function find1(arry, uid){
    arry.forEach(function(obj){
        if(obj.uid === uid){
            return obj;
        }
    });
    return null;
}

但当我将其更改为以下代码时,它可以正常工作......

function find2(arry, uid){
    var dt;
    arry.forEach(function(obj){
        if(obj.uid === uid){
            dt = obj;
        }
    });
    return dt;
}

var array = [
    {uid:"name01"},
    {uid:"name02"},
    {uid:"name04"},
    {uid:"name04"}
];


console.log('find1', find1(array, 'name02'));   // console output: find1 null
console.log('find2', find2(array, 'name02'));   // console output: find2 Object {uid: "name02"}

我在find1做错了什么?

2 个答案:

答案 0 :(得分:3)

在find1方法中,您明确返回null。在arry值的forEach循环中,它不会从find1方法返回,它会从内部forEach的匿名函数返回数组中的所有值。

答案 1 :(得分:0)

在第一个例子中,你从内部函数返回,而不是从函数'find1'返回。结果从内部函数返回到'find1'的主体。但'find1'不会返回此结果。

要修复它,你只需要函数'find1'中的变量。像这样:

var result = array.forEach(...);
return result;

左右:

var result = null;
arry.forEach(function(obj){
        if(obj.uid === uid){
            result = obj;
        }
    });
return result;