ImmutableJS 在映射期间更新第三个参数?

ImmutableJS updates the third argument during mapping?

我有一个不可变列表并且我 运行 一个 map。第三个参数是列表本身 (iter),但它似乎没有引用原始列表,而是针对它已经处理过的元素更新它。

Immutable.fromJS([1, 2]).map((e, i, l) => console.log(l.toJS()))

打印:

[1, 2]
[undefined, 2]

对于第一个元素,它打印原始列表,但对于第二个元素,列表似乎已更改。

我希望第三个参数始终引用原始列表而不是部分更新的列表。

我确定我只是遗漏了一个小问题,但我不明白为什么不是这样。

Immutable.version
"4.0.0-rc.12"

这是一项性能优化功能。

出于性能原因,创建了一个可变列表,这也是在映射循环中传递的内容,而不是原始列表。您必须自己保留原始实例。

https://github.com/immutable-js/immutable-js/blob/master/src/List.js#L176