javascript - JavaScript 递归变量值未定义
问题描述
当我运行以下命令JS
时,控制台正确记录a
为字符串:“foo”,但返回值未定义。typeof()
还说它是一个字符串。console.log
从第 5 行到第 6 行(the和 the )没有变化return
,那么这怎么会自发地变成未定义的呢?
let a = "foo";
let c = 0;
function test() {
if (c === 5) {
console.log(a);
return a;
} else {
c++;
test();
}
}
解决方案
在您的递归调用中,使用return test()
:
let a = "foo";
let c = 0;
function test() {
if (c === 5) {
console.log(a);
return a;
} else {
c++;
return test();
}
}
说明:考虑test()
原始代码中的第一次调用。如果c
是 5,它会返回一个值,否则,它不会返回任何东西。当然它会执行第二次调用test()
,但它不会将该调用的值返回给您的主程序。这就是为什么return
需要声明的原因。同样的逻辑适用于所有test()
wherec
不等于 的调用5
。
推荐阅读
- batch-file - 批处理文件代理设置禁用不起作用 Win 10
- vba - .如果从工作表启动,查找宏不起作用
- python - 如果另一个文件夹中的 .xls 同名,如何打开文件夹中的 .txt
- javascript - console.log 文件在哪里?
- python-3.x - 如何从 REST API 读取数据并使用 Python 将数据插入 MongoDB?
- airflow - 如何使用 Airflow 对 BigQuery 执行 S3?
- vba - 有什么方法可以将形状名称保留在新幻灯片中?
- c# - C#返回颜色变化
- scala - 当我们在连接列中有多个值时,如何在 Spark Scala 中应用连接
- foselasticabundle - FOSElasticaBundle:多对多关系