首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript for循环写入数组未定义

Javascript for循环写入数组未定义
EN

Stack Overflow用户
提问于 2018-05-28 19:19:13
回答 3查看 81关注 0票数 1

嗨,我正在做雄辩的javascript chp4的第一部分,一个范围的总和。在花了一段时间之后,我确信我已经破解了第一部分。

编写一个范围函数,该函数接受两个参数start和end,并返回一个包含从start到end(包括在内)的所有数字的数组。

我看过人们的答案,但它们都包含了问题的更深层次的部分。我想保持简单,毕竟如果我不能完成第一部分,那么就没有希望了。这看起来很简单。

代码语言:javascript
复制
function range(start, end) {
  let array = [];

  for (let i = start; i <= end; i++){array.push(i);}
}

console.log(range(20 , 25));

但我没有明确的定义,我甚至尝试过复制和缩减书籍的答案,以应对类似的情况。

感觉我的大脑就是不能写代码。我哪里错了?为什么它是未定义的?

下面给出了答案

代码语言:javascript
复制
function range(start, end, step = start < end ? 1 : -1) {
  let array = [];

  if (step > 0) {
    for (let i = start; i <= end; i += step) array.push(i);
  } else {
    for (let i = start; i >= end; i += step) array.push(i);
  }
  return array;
}

function sum(array) {
  let total = 0;
  for (let value of array) {
    total += value;
  }
  return total;
}

console.log(range(1, 10))
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55

thx的家伙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:21:04

您不会从range返回任何内容。在range函数中使用return array;

代码语言:javascript
复制
function range(start, end) {
  let array = [];

  for (let i = start; i <= end; i++){array.push(i);}
  return array;
}

console.log(range(20 , 25));

票数 4
EN

Stack Overflow用户

发布于 2018-05-28 19:25:19

变量array是用let声明的,这给了它块作用域。它在函数range中声明

代码语言:javascript
复制
function range(start, end) {
  let array = [];

  for (let i = start; i <= end; i++){array.push(i);}
}

并且它的持续时间在函数终止时到期。之后它就不复存在了。

正如其他人已经说过的,return array

这样,就为调用它的行保留了一个引用。如果赋值给那里的另一个引用,数组的持续时间将延长,直到未被引用。然后它会进入垃圾回收。

示例:

代码语言:javascript
复制
let arr = range(5,10);
票数 1
EN

Stack Overflow用户

发布于 2020-06-10 07:45:33

雄辩的java脚本的代码可能如下所示:

代码语言:javascript
复制
function range(start,end,step){
  let myArr=[];
  if(step){
    for(let i=start;i<=end;i+=step){
    myArr.push(i);
  }
return myArr;
  }
  else{
  for(let i=start;i<=end;i++){
    myArr.push(i);
  }
  return myArr;}
}


function sum(arr){
  let total=0;
  for (let item of arr){
    total +=item;
  }
  return total;
}
sum(range(1,10,2));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档