Node.js库依赖于对象键序是否可接受的样式?

枚举javascript对象的键以插入顺序重放键:

> for (key in {'z':1,'a':1,'b'}) { console.log(key); }
z
a
b

这不是标准的一部分,但被广泛实施(如此处所述):

ECMA-262不指定枚举顺序。 事实上的标准是匹配V8的插入顺序,但有一个例外:

V8对数组索引的枚举顺序(即可以解析为32位无符号整数的属性名称)不作任何保证。

构建Node.js库时,是否可以接受这种行为?


绝对不! 这不是一个风格问题,而是一个正确的问题。

如果你依赖这个“事实上的”标准,你的代码可能会在ECMA-262 5th Ed上失败。 因为该规范没有指定枚举顺序。 而且,V8引擎未来可能会改变它的行为,比如性能方面的利益


绝对不要依赖按键的顺序。 如果标准没有指定订单,那么实现可以随意进行。 哈希表通常是这些对象的基础,并且您无法知道何时可以使用这些对象。 Javascript有许多实现,他们都争相成为最快的。 按键顺序会因实现而有所不同,如果不是现在,那么将来也会有所不同。


不可以。依赖ECMAScript标准,或者您必须与开发人员讨论是否存在像事件标准这样的人。

链接地址: http://www.djcxy.com/p/72259.html

上一篇: Is it acceptable style for Node.js libraries to rely on object key order?

下一篇: how does Array.prototype.slice.call() work?