javascript - 函数在控制台调用时返回值,但在函数声明后调用时不会返回
问题描述
我有一个简单的 for 循环,可以将给定数组中的数字相加。正如问题所说,我在控制台中调用该函数并将其中一个数组传递给......没问题。记录并返回预期值。
但是,如果我在我的脚本中调用该函数,就在我的函数声明之后。它将完成日志但不返回任何内容。我什至没有不确定。
我正在使用 VS Code(看不出这会如何影响任何事情),正在运行实时服务器。
只是想确定为什么当我在控制台中调用该函数时一切都很好,但是如果我在我的脚本中调用它,那么它会拒绝返回该值。
我已经在函数中定义了我的总变量,然后我尝试在全局范围内声明它(并不是说我可以看到它会对这样一个简单的函数脚本产生影响)。我将功能的每一步都记录到控制台,没有问题。打印了所有内容,但未返回值。
let numsA = [1, 10, 13, 5, 2, 1, 9, 8, 23];
let numsB = [15, 18, 5, 23, 55, 2, 9, 15, 15];
function sumArray(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log(sum);
return sum;
}
console.log(sumArray(numsA));
预期结果:sumArray(numsA): 72 被记录到控制台,然后返回;
实际结果:72 被记录到控制台,没有返回任何内容。甚至没有定义。
解决方案
在我看来,您对 return 声明的真正作用有点困惑。return 语句停止函数的执行并从该函数返回一个值。因此,在您将数组作为参数传入后,您的函数将启动一个执行上下文,它将同步运行您的代码,然后返回 sum 作为函数值。然后,console.log 会将其记录到控制台。如果不将函数的值附加到控制台、alert() 或 dom 节点,您将无法查看它返回的内容。
推荐阅读
- css - Kendo MVC 电子表格 - 将单元格文本旋转 90°
- css - HTML 表单上的 Wordpress Divi 自定义 CSS
- docker - Docker 中的 InfluxDB 无法移动数据量
- eclipse - 将源码添加到Eclipse中Tomcat9 Targeted Runtime的所有jar中,以便F3打开源码
- neural-network - Torchtext AttributeError:“示例”对象没有属性“text_content”
- java - 使用 Fast Purge Open API 通过 java 代码清除 akamai 中的缓存 URL
- python - python“IndexError:索引 8 超出轴 0 的范围,大小为 8”
- visual-studio-code - 在 VSCode 的终端中,空格太多
- pipenv - pipenv:pipenv 如何计算 pipfile.lock 已过期
- android - 如何将使用您的 PRODUCTION 证书签名的 APK 安装到测试设备?