Javascript函数始终返回null

时间:2013-07-31 17:10:20

标签: javascript

我是JavaScript世界的新手。我怀疑return语句在JavaScript中是如何工作的。

我要做的是让函数传递一个参数param并查看param是否与exampleData对象的键匹配。如果匹配发现我想返回值并打破每个函数的循环也打破了我不想在每个函数下执行任何其他语句的函数。如果未找到匹配项,则该函数必须返回null。但目前该函数始终返回空值。

function exampleFunction(param){
    $.each(exampleData, function (key, value) {
        if(key == param){
        return value;
        }
    });
    return null;
}

任何对此的见解都将受到高度赞赏。谢谢。

4 个答案:

答案 0 :(得分:9)

您的示例似乎不需要循环。那个并从循环代表返回并没有为你做任何事情。

您可以使用in运算符测试对象是否出现在对象中。

function exampleFunction(param){
  return param in exampleData ? exampleData[param] : null;
}

答案 1 :(得分:3)

鉴于Crazy Train的评论,您需要捕获匹配值,以便稍后返回:

function exampleFunction(param) {
    var match = null;
    $.each(exampleData, function (key, value) {
        if (key == param) {
            match = value;
            return false; // to end the $.each early
        }
    });
    return match;
}

答案 2 :(得分:1)

试试这个:

function exampleFunction(param){ 
    return exampleData[param];
  }

编辑:如果你想在参数未定义时返回null,那么看看Paul和Crazy Train的评论:

return (typeof exampleData[param] === 'undefined')? null: exampleData[param]; 

OR

return (param in exampleData) ? exampleData[param] : null;

答案 3 :(得分:0)

您的方法存在一些问题:

  1. 您定义的内部函数是return$.each,而不是外部函数,因此您永远不会得到该值。
  2. 您不需要以野性的方式迭代对象。 Javascript中的对象是哈希表,您可以简单地执行以下操作
  3. function exampleFunction(param) {
        return exampleData[param];
    }
    

    如果exampleData[param]undefined,则会返回undefined,否则会返回存储在那里的值。

    如果你绝对需要未定义的案例来返回null而不是undefined,那么它会变得有点复杂。

    function exampleFunction(param) {
        if(exampleData.hasOwnProperty(param) {
            return exampleData[param];
        } else {
            return null;
        }
    }