3 回答

TA貢獻1803條經驗 獲得超6個贊
問題是,為什么不變性如此重要?突變對象有什么問題?它不是使事情變得簡單嗎?
實際上,事實恰恰相反:可變性使事情變得更復雜,至少從長遠來看。是的,它使您的初始編碼更加容易,因為您可以隨心所欲地進行更改,但是當程序變大時,這將成為一個問題–如果更改了值,什么更改了?
當您使所有內容不變時,這意味著數據再也不會因意外而更改。您肯定知道,如果將值傳遞給函數,則無法在該函數中對其進行更改。
簡而言之:如果您使用不可變的值,則很容易就可以對您的代碼進行推理:每個人都會獲得數據的唯一*副本,因此它無法處理并破壞代碼的其他部分。想象一下,這使在多線程環境中工作變得容易得多!
注意1:根據您所做的操作,不變性可能會帶來性能損失,但是Immutable.js之類的東西會盡可能地優化。
注2:在不太確定的情況下,您不確定Immutable.js和ES6的const含義完全不同。
在通常情況下,我可以將對象添加到數組中。在這種情況下我該如何實現?刪除商店并重新創建?是不是將對象添加到數組中的開銷較???PS:如果該示例不是解釋不變性的正確方法,請讓我知道什么是正確的實際示例。
是的,您的新聞示例非常好,您的推理也完全正確:您不能只修改現有列表,因此需要創建一個新列表:
var originalItems = Immutable.List.of(1, 2, 3);
var newItems = originalItems.push(4, 5, 6);
添加回答
舉報