【问题标题】:How to get let inside a block when adding iterations to it? [closed]向块添加迭代时如何让块进入? [关闭]
【发布时间】:2019-06-17 03:12:10
【问题描述】:

想象一下:

const arr = ['a','b','c'];
let num;
const incr = arr.map((el, i) => { 
 num += el; 
}
// num is undefined in incr

如何在incr 函数中获取num,以便它可以在每个循环中自增?

尝试将num 放入incr 不会导致适当的增量,因为它将在每个循环中被覆盖。

我应该改用var 吗?

【问题讨论】:

  • 你不需要num,使用Array.prototype.reduce
  • 它是undefined,因为你从来没有给它赋值。
  • 在 incr 函数中未定义

标签: javascript variables var let


【解决方案1】:

你没有初始化num,所以它的值是undefined

const arr = ['a','b','c'];
let num = '';
arr.forEach((el, i) => { 
 num += el; 
});

这将使您在num 中获得'abc'

但是,.reduce 更好地服务于累积值的习惯用法:

const arr = ['a','b','c'];
const num = arr.reduce((acc, i) => acc + i);

更好的是,您在这里所做的,即加入一个数组以形成一个字符串,由 .join 提供服务:

const arr = ['a','b','c'];
const num = arr.join('');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多