if 语句未评估但控制台日志显示它应该

if statement not evaluating but console log shows it should

我正在尝试编写一个函数来获取字符串的长度,而不使用 .length 属性 或任何循环或内置方法。我正在使用递归,但是,停止语句没有评估并导致堆栈溢出。我尝试了控制台日志记录 string[i] 果然,一旦达到长度,它就会在控制台记录“未定义”,但 if 语句仍然不会计算。

const getLength = (string, i = 0) => {
    if (string[i] === 'undefined') return 0;
    return 1 + getLength(string, i+1);
}

console.log(getLength("what is going on??")); //18

if-state应该是string[i] === undefined

您对 undefined 的测试无效

你可以测试falsy或者更详细

这只是一个假值,它会在 0

这样的假值上失败

const getLength = (string, i = 0) => string[i] ?  1 + getLength(string, i+1) : 0;
console.log(getLength("what is going on??")); //18