【发布时间】:2020-07-20 18:47:57
【问题描述】:
这是一个递归比较两个字符串的函数。它可以正常工作:
compareStr("", ""); --- 返回真。
compareStr("house", "houses"); --- 返回 false。
但由于某种原因,此调用返回 undefined:
compareStr('tomato', 'tomato');
更奇怪的是,该函数将其放入代码块并将“应该返回 true”记录到控制台,但它完全跳过了 return 语句,而是返回 undefined。
var compareStr = function (str1, str2) {
if (str1 === '' && str2 === '') {
console.log('Should return true');
return true;
}
var arr1 = str1.split('');
var arr2 = str2.split('');
var frag1 = arr1.pop();
var frag2 = arr2.pop();
if (frag1 === frag2) {
var strA = arr1.join('');
var strB = arr2.join('');
compareStr(strA, strB);
} else {
return false;
}
};
【问题讨论】:
标签: recursion conditional-statements return-value undefined-behavior