即使值在console.log中显示,javascript函数返回undefined

时间:2014-03-15 15:13:29

标签: javascript

我有一个非常烦人的问题,即每次返回一个undefined值的函数,即使console.log()总是显示进入第一个if语句时有一个值

这是我的功能

function getElementIdentifier(elem, domSelector) {
    if(elem.getAttribute('id') !== null) {
        console.log('here');

        return elem.id + ' ' + domSelector;
    } else {
        getElementIdentifier(elem.parentNode, elem.tagName + ' ' + domSelector);
    }
}

这就是我所说的

getElementIdentifier(elem, '');

这是一个复制它的小提琴。 http://jsfiddle.net/wqCSn/5/(感谢@adeneo)

2 个答案:

答案 0 :(得分:3)

如果以递归方式自行调用,则函数不会返回值。你应该添加return语句ro替代算法分支

function getElementIdentifier(elem, domSelector) {
    if(elem.getAttribute('id') !== null) {
        return elem.id + ' ' + domSelector;
    } else {
        return getElementIdentifier(elem.parentNode, elem.tagName + ' ' + domSelector);
    }
} 

答案 1 :(得分:1)

嗯......试试这个:

function getElementIdentifier(elem, domSelector) {
 if(elem.getAttribute('id') !== null) {
    console.log('here');

    return elem.id + ' ' + domSelector;
 } else {
 //return the recursion returned value (sounds like inception) but
 //you are expecting a value from this function... 
    return getElementIdentifier(elem.parentNode, elem.tagName + ' ' + domSelector);
 }
}