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
我正在尝试编写一个函数来获取字符串的长度,而不使用 .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