Javascript函数始终返回null

Javascript函数始终返回null,javascript,Javascript,我是JavaScript世界的新手。我怀疑return语句在JavaScript中是如何工作的 我试图做的是让函数传递一个参数param,并查看param是否与exampleData对象的键匹配。如果找到匹配项,我希望返回值并中断每个函数的循环,同时也中断函数,我不希望在每个函数下执行任何其他语句。如果未找到匹配项,则函数必须返回null。但目前该函数总是返回空值 function exampleFunction(param){ $.each(exampleData, function

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

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

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

如能对此有所了解,将不胜感激。谢谢。

鉴于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;
}
试试这个:

function exampleFunction(param){ 
    return exampleData[param];
  }
编辑:如果要在参数未定义时返回null,请查看Paul和Crazy Train的注释:

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


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

可以使用操作符测试对象中是否出现关键点

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

您的方法存在一些问题:

  • 您定义的内部函数是将返回到$。每个,而不是返回到外部函数,因此您永远不会得到该值
  • 您不需要像现在这样在对象上迭代。Javascript中的对象是哈希表,您只需执行以下操作
  • :

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

    如果您绝对需要未定义的大小写返回
    null
    而不是
    undefined
    ,那么它会变得有点复杂

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

    你确定键和参数匹配吗?另外,您确定该值不为null吗?您的
    返回值处于不同的功能中。只需使用
    for in
    循环即可。无需执行所有这些操作
    exampleData[param]
    的作用几乎相同。当param不在exampledata中时,它等于
    未定义
    。根本不需要循环,除非你真的需要使用
    =
    操作符的类型强制。结束每个操作符需要额外的+1。没有必要通过exampleData循环。除非你想在返回之前修改值。修改值没有什么区别。我只是对OP的思路提供了最简单的更正;我绝对同意有更好的解决方案发布。如果它是null,它返回null。如果未定义,则返回未定义。因此,如果他想要null,则需要测试它是否存在,无需将其他人的答案复制到yours@mplungjan它们是很好的建议,所以我编辑了我的答案以反映这一点。扩展答案没有坏处。除非调用方正在测试
    ==null
    function exampleFunction(param) {
        return exampleData[param];
    }
    
    function exampleFunction(param) {
        if(exampleData.hasOwnProperty(param) {
            return exampleData[param];
        } else {
            return null;
        }
    }