相关疑难解决方法(0)

JavaScript是否保证对象属性顺序?

如果我创建这样的对象:

var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
Run Code Online (Sandbox Code Playgroud)

生成的对象总是这样吗?

{ prop1 : "Foo", prop2 : "Bar" }
Run Code Online (Sandbox Code Playgroud)

也就是说,属性是否与我添加它们的顺序相同?

javascript object

584
推荐指数
11
解决办法
20万
查看次数

ES6是否为对象属性引入了明确定义的枚举顺序?

ES6是否为对象属性引入了明确定义的枚举顺序?

var o = {
  '1': 1,
  'a': 2,
  'b': 3
}

Object.keys(o); // ["1", "a", "b"] - is this ordering guaranteed by ES6?

for(let k in o) {
  console.log(k);
} // 1 2 3 - is this ordering guaranteed by ES6?
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

50
推荐指数
3
解决办法
1万
查看次数

在遍历数组时应该使用for-of还是forEach?

另外,这是样式问题还是功能问题?是偏好问题还是更好?我试图了解目的。

通常我用

let iterable = [10, 20, 30];

iterable.forEach((val) => {
   console.log(val);
})
Run Code Online (Sandbox Code Playgroud)

但我看到这种新语法可用。

let iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value);
}
Run Code Online (Sandbox Code Playgroud)

能否提供一个最佳用例的例子,当有人使用它时可能会有所启发?

javascript ecmascript-6

14
推荐指数
2
解决办法
3712
查看次数

为什么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
查看次数

标签 统计

javascript ×4

ecmascript-6 ×3

for-loop ×1

object ×1