javascript是否保证即使将新值分配给键,也会保留对象的键序列?
例如,如果我有以下对象
var Object = {
keyX: value1,
keyB: value2,
keyZ: value3
}
Run Code Online (Sandbox Code Playgroud)
如果我使用密钥迭代for .. in,我得到正确的序列即keyX, keyB, keyZ.如果我改变了值keyB,我仍然在迭代中获得相同的序列.
我的问题是,序列是否始终保持不变,或者在任何情况下都可能发生变化?
嗯,在文档(MDN)中很清楚地说:
for ... in循环以任意顺序迭代对象的属性.
而本节文件给出了更全面的解释如下:
虽然ECMAScript使对象的迭代顺序依赖于实现,但似乎所有主流浏览器都支持基于最先添加的属性的迭代顺序(至少对于不在原型上的属性).但是,对于Internet Explorer,当在属性上使用delete时,会产生一些令人困惑的行为,从而阻止其他浏览器将对象文字等简单对象用作有序关联数组.
在资源管理器中,虽然属性值确实设置为未定义,但如果后来添加了一个具有相同名称的属性,则该属性将在其旧位置迭代 - 而不是在迭代序列的末尾,正如人们可能期望的那样删除了该属性,然后将其添加回来.
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |