javascript嵌套函数变量范围

时间:2018-08-16 17:46:27

标签: javascript

我正在使用javascript访问数据库的API,这是我的功能之一

function getAttrVal(ref, attrName)
{   
    var result = "null"

    RM.Data.getAttributes(ref, attrName, function(result)
    {
        var attributes = result.data;

        attributes.forEach(function(attr)
        {
            var attrVal = attr.values[attrName];
            println("Check " + attrVal)   // here it is printing 'Check 5' which is correct since attrVal should equal '5'
            result = attrVal;
        });
    });

    return result;   // but here it returns the value 'null'
}

如何返回变量“结果”为5。

这似乎是一个可变范围的问题。

TIA

是的,我是使用JavaScript的傻瓜!

1 个答案:

答案 0 :(得分:0)

tldr;没错,这是一个可变范围界定问题。

您有2个变量定义为结果,一个在forEach迭代范围内,另一个在父范围内。 尝试重命名迭代变量:

function getAttrVal(ref, attrName){   
    var result = "null";

    RM.Data.getAttributes(ref, attrName, function(_result)
    {
        var attributes = _result.data;

        attributes.forEach(function(attr)
        {
            var attrVal = attr.values[attrName];
            println("Check " + attrVal)   // here it is printing 'Check 5' which is correct since attrVal should equal '5'
            result = attrVal;
        });
    });

    return result;   // but here it returns the value 'null'
}