的递归下的循环不能使用forEach 可以使用for代替
错误写法
// 获取完整名字 var getFullName = function(code, resultName) { if (code === '0') { return resultName; } else { popup.fullData.forEach(function (val) { if (code === val.code) { var text = val.text + resultName; return getFullName(val.parentcode, text); } }); /*for (var i = 0, length = popup.fullData.length; i < length; i++) { if (code === popup.fullData[i].code) { var text = popup.fullData[i].text + resultName; return getFullName(popup.fullData[i].parentcode, text); break; } }*/ } };
正确写法
// 获取完整名字 var getFullName = function(code, resultName) { if (code === '0') { return resultName; } else { for (var i = 0, length = popup.fullData.length; i < length; i++) { if (code === popup.fullData[i].code) { var text = popup.fullData[i].text + resultName; return getFullName(popup.fullData[i].parentcode, text); break; } } } };
可能原因是foreach中的return是终端循环作用 而不是返回总用 具体原因我也不知道 求大神指教