【问题标题】:JavaScript function not returning all the values [duplicate]JavaScript函数不返回所有值[重复]
【发布时间】:2018-08-21 06:50:06
【问题描述】:

我刚开始学习JavaScript,当我运行下面的代码时,它只返回orange,我认为它应该返回所有值。

function Array(whatever) {
    for (var i=0; i < whatever.length; i++) {
        return whatever[i];
    }
}

var list = Array(['orange','cat','mouse','dog','pen']);

return 没有按预期在 for 循环中工作,谁能解释为什么?

【问题讨论】:

标签: javascript


【解决方案1】:

问:“返回”是做什么的?

A: 退出函数。立即地。

之前您的循环有机会打印除“橙色”之外的任何其他内容。

在你“完成”函数需要做的所有事情之前,你不应该调用return

建议:

Array" 可能是一个糟糕的函数名称。

你想让这个函数做什么?

例如,也许您希望它“打印数组”。在这种情况下:

function printArray(whatever) {
  for (var i=0; i<whatever.length; i++) {
    console.log("whatever[" + i + "]: " + whatever[i]);
  }
}

var list = Array(['orange','cat','mouse','dog','pen']);
printArray(list);

熟悉 MDN(Mozilla 开发者网络)。

这是一个很棒的入门教程:

https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics

【讨论】:

  • 我认为你的代码在这里,如果我们在这里使用console.log,是不是意味着函数没有返回值,因为console.log是为了显示的目的,对不起,我还在学习中,拜托如果我错了,请纠正我。函数 printArray(whatever) { for (var i=0; i
  • 一个“函数”1)总是“做某事”,2)可能“返回某事”。您最初的问题是您过早地进行了“退货”。我的示例“做某事”......在每个元素上。但它不会发生“返回值”。问:这能回答你的问题吗?问:如果你想要“返回一个值”——那个值是什么?为什么?
  • 嗨,保罗,谢谢。 A:它确实回答了我的问题,但我正在寻找返回值。如果我正在寻找返回值,那么我认为返回值将是 printArrary,我猜输出应该是参数 ['orange','cat','mouse','dog','pen']。跨度>
  • 我可能是错的,我记得 return 是捕获从函数返回的值,console.log 正在控制台上打印。
  • 一个函数可以有一个“返回值”。这就是“return”关键字的用途;)它可以是任何值:字符串(如“orange”)、数组(如“list”)或任何您想要的值。但同样:1)一个函数可以“做某事”,也可以“返回某事”。 2)在您的情况下,“做某事”看起来就足够了。 3)但如果你想“返回一些东西”——当然。这是你的选择,完全取决于你:)
【解决方案2】:

你必须在你的函数结束时调用 return

function Array(whatever) {
  var arr=[]
 for (var i=0; i<whatever.length; i++) {
   arr.push(whatever[i]); /// because you write here return then function exit
}
 return arr;
}

var list = Array(['orange','cat','mouse','dog','pen']);

【讨论】:

  • @Lemo tree 解决你的问题了吗?
  • 嗨,aimprogman,谢谢,是的。只是想清楚一点,这里添加 push 是每次循环运行时在数组末尾添加一个值,然后返回到数组的新长度。那是对的吗?抱歉,我知道这是一个基本问题..-_-!!两周前刚开始学习 JavaScript。另外,“var arr=[]”是否意味着以任何值开头?非常感谢!
  • var arr=[] 表示“用零值初始化数组”arr。创建一个“空数组”。
【解决方案3】:

函数应该只在 for 循环之后返回。

function Array(whatever) {
var tmpArr = [];
    for (var i=0; i<whatever.length; i++) {
        tmpArr.push(whatever[i]);
    }
return tmpArr;
   }

var list = Array(['orange','cat','mouse','dog','pen']);

【讨论】:

    【解决方案4】:

    不要在 for 循环中使用 return。 return 语句一旦执行就会退出函数,函数的剩余语句不会执行。

    //no need of for loop here
    function Array(whatever) {
    return whatever;
    }
    //if you want it line by line
    function Array(whatever) {
    for (var i=0; i<whatever.length; i++) {
        console.log(whatever[i]);
    }
    }
    

    【讨论】:

    • function Array(whatever) { return any; } //如果你想逐行显示 function Array(whatever) { for (var i=0; i
    • 变量名和函数名不要使用常用关键字。
    • 你知道在我的原始代码上是 for 循环先运行还是 return 先运行?因为 for 循环在返回之前。
    • 是的。知道了。 :)
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2016-10-16
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多