【问题标题】:Expression passes condition but ignores return statement inside the block表达式通过条件但忽略块内的返回语句
【发布时间】: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


    【解决方案1】:

    您错过了退货。

    return compareStr(strA, strB);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多