J'ai ce réducteur dans mon magasin, où l'état initial initialProcessingstate code> est importé à partir d'un autre fichier source.
const _initialProcessingState = initialProcessingState;
4 Réponses :
La valeur de L'objet IT Références peut em> être muté em>. p> initialProcessingstate code> est une référence à un objet. Cette valeur ne peut pas changer. P>
La déclaration de const crée une référence en lecture seule à une valeur. Ce ne signifie pas que la valeur qu'il conserve est immuable, juste que la variable L'identifiant ne peut pas être réaffecté. Par exemple, dans le cas où le contenu est un objet, cela signifie que le contenu de l'objet (par exemple, son les propriétés) peuvent être modifiées. P> blockQuote>
Modifier H1>
Il pourrait être important de mentionner
objet.freezez () code> comme @APOLO a souligné dans son commentaire. P>
Objets h3>
La méthode Object.freeze () gèle un objet. Un objet gelé ne peut pas plus longtemps être changé; geler un objet empêche de nouvelles propriétés de être ajouté à celui-ci, les propriétés existantes d'être supprimées, empêchent Modification de l'énumérabilité, de la configurabilité ou de l'écriture de propriétés existantes et empêche les valeurs des propriétés existantes d'être changé. De plus, la congélation d'un objet empêche également son prototype d'être changé. p> blockQuote>
avec
objet.frez () code> Cependant, il est également important de noter qu'il n'est pas étendu aux valeurs que l'objet congelé fort> détient: P>
Notez que les valeurs [d'objets] qui sont des objets peuvent toujours être modifiées, à moins qu'ils sont également gelés. p> blockQuote>
Tableaux h3>
En tant qu'objet, un tableau peut être congelé; Après cela, ses éléments ne peut pas être modifié et aucun élément ne peut être ajouté à ou retiré de la Array. P> blockQuote>
source dans la section
edit forte> forte> https://developer.mozilla.org/en-us/docs/web/javascript/Reference/global_Objects/Object/freeze P>
Serait bien d'ajouter un mot sur objet.freeze code> pour ceux qui recherchent des moyens de créer des objets immutables ( développeur.mozilla.org/fr/docs/web/javascript/reference/... )
const code> signifie que la référence ne peut pas être réaffectée. C'est pourquoi, dans le cas de l'attribution de chaînes ou de chiffres, ils restent immuables, mais lors de l'attribution d'objets et de tableaux, son contenu peut être modifié par leur référence, ce qui ne les rend pas immuables. P>
de MDN :
La déclaration de const crée une référence en lecture seule à une valeur. Ce ne signifie pas que la valeur qu'il conserve est immuable, juste que la variable L'identifiant ne peut pas être réaffecté. Par exemple, dans le cas où le contenu est un objet, cela signifie que le contenu de l'objet (par exemple, son les propriétés) peuvent être modifiées. P> blockQuote>
xxx pré> vous pouvez regarder Object.frez , mais cela ne gèle que le premier niveau: P>
p>
const foo = Object.freeze({ bar : 'baz', baz : { foo : 'bar'} }); foo.bar = 'foo'; // will not change since foo is frozen foo.baz.foo = 'foo'; // will change, since foo.baz is not frozen console.dir(foo)
Les constantes JavaScript ne sont pas les mêmes que dans d'autres langues. Les constantes ne sont pas immuables. Si votre constante fait référence à un objet ou à un tableau, l'objet peut être modifié, vous ne pouvez tout simplement pas réaffecter le const.
Pour clarifier ceci: ce qui est constant à propos d'un
const code> est la référence à l'objet / valeur. Cela ne peut pas être changé. L'objet lui-même et ses propriétés peuvent être mutés. Pensez
const biologiquefather = {...}; code> c'est constant, cela ne changera jamais.
biologiquefather.facialhair code> n'est pas constant. Et tous les changements s'appliqueront à / être visibles à tous ceux qui lui ont fait référence.