Lodash forOwn和forOwnRight迭代顺序

Anr*_*nri 4 javascript lodash

在lodash中,您可以找到以下功能:

_.forOwn _.forOwnRight

forOwn函数示例以az顺序迭代属性,但是说:

迭代顺序无法保证

虽然forOwnRight权利要求书将在相反的(ZA)顺序进行迭代.

这对我来说没什么意义,所以有2个问题

  1. forOwnRight如果迭代订单无法保证,为什么甚至存在呢?
  2. 为什么不能保证订单?

zer*_*kms 6

  1. 订单不保证但是一致.这意味着_.forOwnRight保证提供相反的结果_.forOwn

  2. 它符合规范:它没有说明如何对对象的属性进行排序,因此由JS引擎决定如何处理它(并且出于性能原因它们会做不同的事情).

注意:顺序不仅取决于特定的ES实现,还取决于运行时,因为现代JS VM在运行时进行了大量的启发式操作.

对于那些对优化感兴趣的人来说,这是一个很好的联系(它严重地不适合在这个Q/A中):