ImmutableJS在映射过程中会更新第三个参数吗?

时间:2019-05-13 08:10:59

标签: javascript immutable.js

我有一个不可变列表,并且运行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"

1 个答案:

答案 0 :(得分:0)

这是一项性能优化功能。

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

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