我有一个非常烦人的问题,即每次返回一个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)
答案 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);
}
}