javascript 函数返回的最佳实践问题

rhfm7lfc  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(191)

我是个编程新手。我在理解函数方面有一些困难。所以我做了练习。但是,我不知道为什么要用return
我的密码起作用了。
在本例中:函数名是reverse。2我在函数中返回一个数组[1,2,5,8]。3 Console.log返回一个名为reverted的新数组。

function reverse(array) {
  const reversed = [];
  for (i = array.length - 1; i > -1; i--) {
    reversed.push(array[i]);
  }
  console.log(reversed);
}
return reverse([1, 2, 5, 8]);
    • 但为什么在验证exercice后,它说我错了,并向我发送此解决方案:**
function reverse(array) {
  const reversed = [];
  for (let i = array.length - 1; i > -1; i--) {
    reversed.push(array[i]);
  }
  return reversed;
}

谢谢:)
我谷歌和使用聊天gpt教我为什么使用回报在我的情况下。但是,没有什么关于我可以理解。。我需要你的帮助。
谢谢大家。

7cwmlq89

7cwmlq891#

变量reversed是在函数体内部定义的,因此只能从函数内部访问。在代码中,您试图从函数外部访问该变量。return关键字在函数内部用于返回值,在函数外部使用return无效。

vx6bjr1n

vx6bjr1n2#

一些备注:

  • 名称reversereversed非常相似,这可能会导致混淆。我在另一个答案和您的注解中看到了这种情况。reverse被定义为函数,reversed是引用数组的局部变量。它们是完全不同的对象。
  • 您在代码中放置了无效的return语句。return语句只能出现在函数体内。
  • console.log(reversed)将在控制台窗口中输出结果,但这并不是本练习的目的。虽然console.log在调试代码时非常有用,但它并不等同于 return value。函数的调用者将获得函数使用return语句返回的返回值,而不是console.log的输出。
  • 您的代码没有使用let(或var)定义i,因此它被隐式声明为全局变量。这不是一个好的做法。请始终显式定义变量。
  • 你的代码 * 调用 * reverse函数。这是你通常会做的 * 测试 * 你的函数,但在代码挑战中,这个调用通常是由测试你的实现的人或框架做出的。这些测试会调用它不止一次,用不同的数组作为参数,通常包括边界情况,比如一个空数组,或者一个非常大的数组。

因此,当您调试代码时,您将调用该函数并打印它 * 返回 * 的值,如下所示:

function reverse(array) {
  const reversed = [];
  for (let i = array.length - 1; i > -1; i--) {
    reversed.push(array[i]);
  }
  return reversed;
}

let result = reverse([1,2,3,4]);
console.log(result); // Should be [4,3,2,1]
result = reverse([1]);
console.log(result); // Should be [1]
result = reverse([]);
console.log(result); // Should be []
result = reverse(reverse([1,2,3,4])); // Reversing the result!
console.log(result); // Should be [1,2,3,4]

也许我还应该提一下reverse也是一个数组的原生方法,它会反转数组本身,而不是创建一个新的数组(如上所述),如果目的是总是创建一个新的数组,你仍然可以使用它:首先创建一个给定数组的副本,反转副本并返回:

function reverse(array) {
  // The spread syntax creates a copy, and reverse is applied on the copy
  return [...array].reverse(); 
}

let result = reverse([1,2,3,4]);
console.log(result); // Should be [4,3,2,1]
result = reverse([1]);
console.log(result); // Should be [1]
result = reverse([]);
console.log(result); // Should be []
result = reverse(reverse([1,2,3,4])); // Reversing the result!
console.log(result); // Should be [1,2,3,4]

相关问题