所以这是我第一次问关于堆栈溢出的问题。我的程序非常简单,只是我朋友让我学习更多编程知识的一个练习。长话短说,下面是我的代码:
let blocks = [
['H','L','S','J','U','B'],
['O','O','N','O','S','O'],
['M','V','O','Y','A','O'],
['E','E','W','' ,'' ,'' ]
];
let blocks_run = function(i,j) {
while (i < blocks.length) {
return blocks[i][j] + blocks_run(i+1,j)
}
}
blocks_run(0,0);由于某些原因,响应总是在结束时返回undefined。
例如:
HOMEundefined我只想知道为什么它在末尾添加了未定义。
提前感谢!
发布于 2020-07-14 08:09:47
let blocks = [
['H','L','S','J','U','B'],
['O','O','N','O','S','O'],
['M','V','O','Y','A','O'],
['E','E','W','' ,'' ,'' ]
];
let blocks_run = function(i,j) {
while (i < blocks.length) {
return blocks[i][j] + (blocks_run(i+1,j) ?? '');
}
}
console.log(blocks_run(0,0));
另一种可能的解决方案。
发布于 2020-07-14 08:11:37
let blocks_run = function(i,j) {
while (i < blocks.length) {
return blocks[i][j] + blocks_run(i+1,j)
}
}该函数使用while而不是if来执行递归调用该函数的return语句。如果由于i越界而导致条件失败,则不会显式返回任何内容,这在JavaScript中表示函数返回undefined。
根据您的需要,您可以尝试
let blocks_run = function(i,j) {
if (i < blocks.length) {
return blocks[i][j] + blocks_run(i+1,j)
}
return ""; // not undefined
}发布于 2020-07-14 08:14:59
不需要循环,因为它永远不会运行超过一次迭代。条件运算符将允许您将整个函数体放入单个表达式中。
let blocks = [
['H','L','S','J','U','B'],
['O','O','N','O','S','O'],
['M','V','O','Y','A','O'],
['E','E','W','' ,'' ,'' ]
];
const blocks_run = (i, j) =>
i < blocks.length ? blocks[i][j] + blocks_run(i+1,j) : '';
console.log(blocks_run(0,0));
https://stackoverflow.com/questions/62886065
复制相似问题