首页 > 解决方案 > 函数在控制台调用时返回值,但在函数声明后调用时不会返回

问题描述

我有一个简单的 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 被记录到控制台,没有返回任何内容。甚至没有定义。

标签: javascript

解决方案


在我看来,您对 return 声明的真正作用有点困惑。return 语句停止函数的执行并从该函数返回一个值。因此,在您将数组作为参数传入后,您的函数将启动一个执行上下文,它将同步运行您的代码,然后返回 sum 作为函数值。然后,console.log 会将其记录到控制台。如果不将函数的值附加到控制台、alert() 或 dom 节点,您将无法查看它返回的内容。


推荐阅读