Javascript对象初始化和评估顺序
Javascript object initialization and evaluation order
如果我写
var a = [1,2];
var b = {
foo: a.pop(),
bar: a.pop()
};
根据规范,b
的值是多少?
(通过实验,它是{foo: 2, bar: 1}
,但我担心这是否是特定于实现的。)
请参阅ECMAScript第11.1.5节,定义如何解析ObjectLiteral
产品。
特别是:
PropertyNameAndValueList
、PropertyName
:AssignmentExpression
评估如下:
评估PropertyNameAndValueList。
评估PropertyName。
评估AssignmentExpression。
其中(1)是递归定义。
这意味着对象文字中最左边的项将首先进行求值,因此{foo: 2, bar: 1}
确实是规范强制的。
它们按照编写顺序进行评估。
相关文章:
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 按顺序添加和删除类
- 使用正则表达式评估电子邮件地址时出现性能问题
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript-根据赋值顺序,按键合并对象数组
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- querySelector/getElementByClassName嵌套项的顺序
- 以不同的顺序输出数据
- 重新排列HTML元素的顺序并更改内容
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- 在Javascript中列出顺序子集元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Mongodb$in以与数组中相同的顺序获取结果
- 如何使用phonegap从安卓设备中提取联系人的字母顺序
- 在表单OnChange中交换数字顺序
- Knockoutjs:同时使用单击和选中绑定时绑定评估的顺序
- Javascript对象初始化和评估顺序
- googlechrome-javascript中的评估顺序