如果我写下来。
var a = [1,2];
var b = {
foo: a.pop(),
bar: a.pop()
};
根据规范,b
的值是多少?
(通过实验,它是{foo: 2, bar: 1}
,但我担心这可能是特定于实现的。)
var a = [1,2];
var b = {
foo: a.pop(),
bar: a.pop()
};
根据规范,b
的值是多少?
(通过实验,它是{foo: 2, bar: 1}
,但我担心这可能是特定于实现的。)
ObjectLiteral
表达式。
特别地:
PropertyNameAndValueList
、PropertyName
:AssignmentExpression
的评估如下:
计算
PropertyNameAndValueList
。计算
PropertyName
。计算
AssignmentExpression
。...
其中(1)是递归定义。
这意味着对象字面量中最左边的项将首先被计算,因此{foo:2,bar:1}
确实符合规范。
pop
会改变原始数组。 - elclanrsb
的属性值是否总是按照代码中列出的顺序进行评估。 - go-oleg