相关疑难解决方法(0)

ES6:在Set/Map迭代过程中从Set/Map中删除元素是否危险?

安全代码new Set()可能如下所示:

let items = [];
for (let item of set)
  if (isBad(item))
    items.push(item);
for (let item of items)
  set.delete(item)
Run Code Online (Sandbox Code Playgroud)

我可以简化代码:

for (let item of set)
  if (isBad(item))
    set.delete(item);
Run Code Online (Sandbox Code Playgroud)

安全代码new Map()可能如下所示:

let keys = [];
for (let [key, val] of map)
  if (isBadKey(key) || isBadValue(val))
    keys.push(key);
for (let key of keys)
  map.delete(key)
Run Code Online (Sandbox Code Playgroud)

我可以简化代码:

for (let [key, val] of map)
  if (isBadJey(key) || isBadValue(val))
    map.delete(key)
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

26
推荐指数
2
解决办法
4924
查看次数

为什么forEach比常规迭代器更受青睐?

我正在阅读airbnb javascript指南。有一个特别的声明,说:

不要使用迭代器。首选JavaScript的高阶函数,而不要使用for-in或for-of等循环。

他们给出上述声明的原因是:

这执行了我们不变的规则。处理返回值的纯函数比副作用更容易推论。

我无法区分给出的两种编码实践:

    const numbers = [1, 2, 3, 4, 5];

    // bad
    let sum = 0;
    for (let num of numbers) {
     sum += num;
    }
    sum === 15;

    // good
    let sum = 0;
    numbers.forEach((num) => {
     sum += num;
    });

    sum === 15;
Run Code Online (Sandbox Code Playgroud)

谁能解释,为什么应该forEach优先于常规for循环?真的有什么不同?使用常规药有副作用iterators吗?

javascript for-loop ecmascript-6

3
推荐指数
2
解决办法
1082
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

for-loop ×1