第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么不變性在JavaScript中如此重要(或需要)?

為什么不變性在JavaScript中如此重要(或需要)?

子衿沉夜 2020-02-03 14:55:29
我目前正在研究React JS和React Native框架。在閱讀關于Facebook的Flux和Redux實現(xiàn)的文章時,我遇到了Immutability或Immutable-JS庫。問題是,為什么不變性如此重要?突變對象有什么問題?它不是使事情變得簡單嗎?舉個例子,讓我們考慮一個簡單的新聞閱讀器應用程序,其打開屏幕是新聞標題的列表視圖。如果我設置說最初具有值的對象數(shù)組,我將無法對其進行操作。這就是不變性原則的意思,對嗎?(如果我錯了,請糾正我。)但是,如果我有一個新的News對象必須更新怎么辦?在通常情況下,我可以將對象添加到數(shù)組中。在這種情況下我該如何實現(xiàn)?刪除商店并重新創(chuàng)建?是不是將對象添加到數(shù)組中的開銷較小?
查看完整描述

3 回答

?
慕碼人8056858

TA貢獻1803條經(jīng)驗 獲得超6個贊

問題是,為什么不變性如此重要?突變對象有什么問題?它不是使事情變得簡單嗎?


實際上,事實恰恰相反:可變性使事情變得更復雜,至少從長遠來看。是的,它使您的初始編碼更加容易,因為您可以隨心所欲地進行更改,但是當程序變大時,這將成為一個問題–如果更改了值,什么更改了?


當您使所有內容不變時,這意味著數(shù)據(jù)再也不會因意外而更改。您肯定知道,如果將值傳遞給函數(shù),則無法在該函數(shù)中對其進行更改。


簡而言之:如果您使用不可變的值,則很容易就可以對您的代碼進行推理:每個人都會獲得數(shù)據(jù)的唯一*副本,因此它無法處理并破壞代碼的其他部分。想象一下,這使在多線程環(huán)境中工作變得容易得多!


注意1:根據(jù)您所做的操作,不變性可能會帶來性能損失,但是Immutable.js之類的東西會盡可能地優(yōu)化。


注2:在不太確定的情況下,您不確定Immutable.js和ES6的const含義完全不同。


在通常情況下,我可以將對象添加到數(shù)組中。在這種情況下我該如何實現(xiàn)?刪除商店并重新創(chuàng)建?是不是將對象添加到數(shù)組中的開銷較???PS:如果該示例不是解釋不變性的正確方法,請讓我知道什么是正確的實際示例。


是的,您的新聞示例非常好,您的推理也完全正確:您不能只修改現(xiàn)有列表,因此需要創(chuàng)建一個新列表:


var originalItems = Immutable.List.of(1, 2, 3);

var newItems = originalItems.push(4, 5, 6);


查看完整回答
反對 回復 2020-02-03
  • 3 回答
  • 0 關注
  • 843 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號