【问题标题】:JavaScript Object Property Instantiation [duplicate]JavaScript 对象属性实例化 [重复]
【发布时间】:2020-12-27 06:24:07
【问题描述】:

如果你有一个对象,其属性是通过调用函数或构造函数来创建的,这些执行顺序是否有保证?

例子:

const testObject = {
  foo: new Date().valueOf(),
  bar: new Date().valueOf()
};

console.log(testObject.foo > testObject.bar);

有没有可能 foo 会大于 bar?

【问题讨论】:

  • 鉴于相同键的后续条目始终覆盖较早的条目,我认为您可以假设它们被评估为书面。
  • 我认为没有任何保证。
  • @DanielA.White 我认为我们可以将其解释为“由语言指定”

标签: javascript


【解决方案1】:

你可以自己试试。在最新的 Firefox 和 chrome 中,它似乎被评估为书面形式:

let i = 0;
const counter = () => i++;

const testObj = {
    a: counter(),
    b: counter(),
    c: counter(),
    d: counter(),
    e: counter()
}

console.log(testObj)

【讨论】:

  • 这不会告诉你它是由语言指定还是只是 Firefox/Chrome 实现功能。
猜你喜欢
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2012-10-17
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多