假设我有一个对象根据函数的返回值分配属性:
var i = 0;
var f = function() { return ++i; }
var foo = {
a:f(),
b:f(),
c:f()
};
Run Code Online (Sandbox Code Playgroud)
是否保证foo.a为1,foo.b为2,foo.c为3?我知道当你迭代一个对象时JS不保证顺序,那么赋值呢?
它是在JS规范中指定的吗?我只是出于教育原因.
谢谢.
如果我写
var a = [1,2];
var b = {
foo: a.pop(),
bar: a.pop()
};
Run Code Online (Sandbox Code Playgroud)
b根据规格,价值是多少?
(通过实验,它是{foo: 2, bar: 1},但我担心这是否是特定于实现的.)