开发者问题收集

JavaScript 函数总是返回 null

2013-07-31
14068

我是 JavaScript 世界的新手。我对 JavaScript 中的 return 语句如何工作有疑问。

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

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

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

3个回答

您的示例似乎不需要循环。循环和从循环委托返回对您没有任何作用。

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

function exampleFunction(param){
  return param in exampleData ? exampleData[param] : null;
}
canon
2013-07-31

鉴于 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;
}
Cᴏʀʏ
2013-07-31

您的方法存在一些问题:

  1. 您定义的内部函数 返回$.each ,而不是外部函数,因此您永远无法获得该值。
  2. 您不需要以疯狂的方式迭代对象。Javascript 中的对象是哈希表,您只需执行以下操作即可

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

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

如果您确实需要 undefined 情况返回 null 而不是 undefined ,那么它会变得有点复杂。

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