Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 洛达斯-福林和福林的目的有什么不同?_Javascript_Lodash - Fatal编程技术网

Javascript 洛达斯-福林和福林的目的有什么不同?

Javascript 洛达斯-福林和福林的目的有什么不同?,javascript,lodash,Javascript,Lodash,从forInRight的文档中: 此方法类似于u.forIn,只是它以相反的顺序迭代对象的属性 为什么lodash需要有两个函数来完成相同的事情,除了顺序,但是不能保证迭代顺序?您不能保证迭代顺序,因为对象中的键不应假定为排序集,换句话说,不需要不同的引擎来保持键的顺序 但是,如果引擎确实试图保持键的顺序,则此方法允许您向后迭代键。它不能保证它将是你所期望的,但它试图这样做。这类似于执行类似于Object.keys(yourObj).reverse().forEach(…)的操作,对象属性的迭代

从forInRight的文档中:

此方法类似于u.forIn,只是它以相反的顺序迭代对象的属性


为什么lodash需要有两个函数来完成相同的事情,除了顺序,但是不能保证迭代顺序?

您不能保证迭代顺序,因为对象中的键不应假定为排序集,换句话说,不需要不同的引擎来保持键的顺序


但是,如果引擎确实试图保持键的顺序,则此方法允许您向后迭代键。它不能保证它将是你所期望的,但它试图这样做。这类似于执行类似于
Object.keys(yourObj).reverse().forEach(…)

的操作,对象属性的迭代顺序在现代JavaScript中得到了很好的保证。
\uu.forInRight
的示例代码有一个很好的提示。。。“记录‘c’、‘b’然后‘a’”,假设在中记录‘a’、‘b’然后‘c’”。因此,无论
.forIn
产生什么样的顺序,
.forInRight
都会起作用opposite@RobbyCornelissen我已经尝试了很多浏览器和节点,你说的是真的。然而,这是文件所说的。什么情况是不保证的?@Phil我知道效果,但重点是迭代顺序不保证,为什么需要两个不同的函数。我想总结得很好。看。ECMAScript 2015明确规定了大多数情况下的迭代顺序。我仍然不会依赖它,但是对于非常特定的用例。