首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在while循环结束时未定义

在while循环结束时未定义
EN

Stack Overflow用户
提问于 2020-07-14 07:57:14
回答 8查看 60关注 0票数 4

所以这是我第一次问关于堆栈溢出的问题。我的程序非常简单,只是我朋友让我学习更多编程知识的一个练习。长话短说,下面是我的代码:

代码语言:javascript
运行
复制
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。

例如:

代码语言:javascript
运行
复制
HOMEundefined

我只想知道为什么它在末尾添加了未定义。

提前感谢!

EN

回答 8

Stack Overflow用户

发布于 2020-07-14 08:09:47

代码语言:javascript
运行
复制
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));

另一种可能的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2020-07-14 08:11:37

代码语言:javascript
运行
复制
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

根据您的需要,您可以尝试

代码语言:javascript
运行
复制
let blocks_run = function(i,j) {
  if (i < blocks.length) {
    return blocks[i][j] + blocks_run(i+1,j)
  }
  return ""; // not undefined
}
票数 1
EN

Stack Overflow用户

发布于 2020-07-14 08:14:59

不需要循环,因为它永远不会运行超过一次迭代。条件运算符将允许您将整个函数体放入单个表达式中。

代码语言:javascript
运行
复制
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));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62886065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档