3

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

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

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

对此的任何见解将不胜感激。谢谢你。

4

4 回答 4

8

您的示例似乎不需要循环。从循环代理返回并不会为您做任何事情。

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

function exampleFunction(param){
  return param in exampleData ? exampleData[param] : null;
}
于 2013-07-31T17:17:54.743 回答
4

鉴于 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;
}
于 2013-07-31T17:13:38.123 回答
0

您的方法存在一些问题:

  1. 您定义的内部函数是returning to $.each,而不是外部函数,因此您永远不会获得该值。
  2. 你不需要以你的狂野方式迭代对象。Javascript中的对象是哈希表,您可以简单地执行以下操作

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;
    }
}
于 2013-07-31T17:17:58.190 回答
0

尝试这个:

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

编辑:如果您想在参数未定义的情况下返回 null,请查看 Paul 和 Crazy Train 的评论:

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

或者

return (param in exampleData) ? exampleData[param] : null;
于 2013-07-31T17:15:08.753 回答