javascript函数忽略return语句

时间:2014-02-24 08:57:25

标签: javascript

我有一个函数默认返回null,另一个值按条件返回。

var getName = function(boxid){
    var boxes = localStorage.getItem("boxes");
    if((boxes != "" )&& (typeof boxes != "undefined") &&( boxes != null))
    {
        boxes = JSON.parse(boxes);
        boxes.forEach(function(box){
            if(box.id == boxid)
            {
                console.log("box.name: "+ box.name+ " boxid: "+ box.id+ " : "+ boxid);
                return box.name;
            }
        });
    }
    return null;
};

找到正确的数组条目。但返回statemant不返回它, 它被忽略了。

3 个答案:

答案 0 :(得分:5)

你的return语句不起作用的原因是因为它是forEach回调的本地回调,与你的getName函数无关。

您应该使用正常的for - 循环:

var getName = function(boxid){
    var boxes = localStorage.getItem("boxes");
    if((boxes != "" )&& (typeof boxes != "undefined") &&( boxes != null))
    {
        boxes = JSON.parse(boxes);
        for(var i = 0; i < boxes.length; i++) {
            if(boxes[i].id == boxid)
            {
                console.log("boxName: "+ boxes[i].name+ " boxID: "+ boxes[i].id+ " : "+ boxid);
                return boxes[i].name;
            }
        };
    }
    return null;
};

答案 1 :(得分:1)

因为它们的范围不同。

您可以使用filtermap功能:

boxes = JSON.parse(boxes);

// the result will be an array of box name
return boxes.filter(function(box){
    return box.id = boxid;
}).map(function(box) {
    return box.name;
});

// if the box id is unqic, then just get the first one.

答案 2 :(得分:1)

return box.name;用于forEach内的功能。

功能getName只有return null;