Dados mutáveis ​​e imutáveis ​​em JavaScript

Dados mutáveis ​​e imutáveis ​​em JavaScript

O termo mutabilidade significa mutável, o conceito de mutabilidade pode ser aplicado apenas a objetos e matrizes em JavaScript. O conceito da mutabilidade não pode ser aplicado a dados primitivos, como string, boolean, número, etc. Enquanto dados imutáveis ​​se referem a dados primitivos cujo estado não pode ser alterado. Neste post, entenderemos a diferença entre dados mutáveis ​​e dados imutáveis ​​com a ajuda de alguns exemplos.

Antes de seguir para dados mutáveis ​​ou dados imutáveis, inicialmente, precisamos esclarecer o conceito de armazenar dados em variáveis ​​JavaScript. As variáveis ​​em JavaScript são capazes de armazenar dois tipos de valores, tipo primitivo ou tipo de referência. Total de sete tipos de dados primitivos estão disponíveis no JavaScript, enquanto existem três tipos de dados de referência. A principal diferença entre eles é que, no tipo de dados primitivo, a memória é alocada na pilha enquanto estiver no tipo de dados de referência, a memória é alocada na pilha. Portanto, em resumo, o tipo de dados primitivo é o tipo de dados de base, enquanto o tipo de dados de referência é o objeto composto de vários recursos e esses objetos são passados ​​como uma referência.

Dados mutáveis ​​em JavaScript

Objetos mutáveis ​​podem ser modificados ou revisados ​​após sua criação, mas devem lembrar que um objeto pode ter duas referências, e também é possível que haja dois objetos com as mesmas propriedades. Portanto, várias referências para um objeto e dois objetos com características semelhantes são duas coisas diferentes.

Implementação de dados mutáveis ​​em JavaScript

Vamos considerar um exemplo para entender a mutabilidade em JavaScript.

Seja funcionário1 = nome: "Joe Clarke", idade: 35, id: 123, cidade: 'Londres';
Seja funcionário2 = funcionário1;
Seja funcionário3 = nome: "Joe Denly", idade: 25, id: 121, cidade: 'Birmingham';
console.log ("verifique se funcionário1 = funcionário2", funcionário1 === funcionário2);
console.log ("verifique se funcionário1 = funcionário3", funcionário1 === funcionário3);

Criamos um objeto chamado funcionário e atribuímos algumas propriedades; na segunda linha, outro objeto foi criado chamado funcionário2 e atribuímos o funcionário, o que significa que o funcionário2 teria as mesmas propriedades que o funcionário. Em seguida, criamos outro funcionário e atribuímos algumas propriedades diferentes. Em seguida, verificamos se "funcionário2" tem as mesmas propriedades que "funcionário" ou não.

A saída do código acima será:

Agora, vamos ver o que acontece se mudarmos o valor de "funcionário1", isso afetará as propriedades de "funcionário2"? Vamos modificar nosso código:

Seja funcionário1 = nome: "Joe Clarke", idade: 35, id: 123, cidade: 'Londres';
Seja funcionário2 = funcionário1;
funcionário1.name = "Dean Elgar";
console.log ("valores atualizados de funcionário1:", funcionário1);
console.log ("valores atualizados de funcionário2:", funcionário2);

Vamos modificar o exemplo anterior, por exemplo, alterar o nome do funcionário1 de "Joe Clarke" para "Dean Elgar" e verifique se isso afeta o nome da propriedade de funcionário2 ou não.

A saída para o nosso código modificado será:

A partir da saída acima, podemos ver que as mudanças que fazemos na propriedade do funcionário1 afetam o valor do funcionário2 também, isso acontece porque o funcionário2 foi criado com a referência do funcionário1.

Dados imutáveis ​​em javascript

Imutabilidade refere -se aos valores primitivos como string, número, etc. e em javascript, não podemos modificá -los, mas podemos reatribuir com alguns novos valores.

Implementação de dados imutáveis ​​em JavaScript

O exemplo abaixo do ritmo ajudará você a entender os tipos de dados imutáveis.

var funcionário1 = 'Daniel';
var funcionário2 = funcionário1;
console.log ("Nome do primeiro funcionário:", funcionário1);
console.log ("Nome do segundo funcionário:", funcionário2);

Criamos uma variável e atribuímos um valor a ele. Em seguida, criamos outra variável e a atribuímos a primeira variável, conforme destacado na captura de tela abaixo de ser dada.

Agora, vamos examinar a saída, você verá ambas as variáveis ​​mostram a mesma saída:

Agora altere o valor de "funcionário2" e observe, ele mudará o valor de "funcionário1" ou o valor da primeira variável permanecerá o mesmo:

var funcionário1 = 'Daniel';
var funcionário2 = funcionário1;
console.log ("Nome do primeiro funcionário:", funcionário1);
console.log ("Nome do segundo funcionário:", funcionário2);
var funcionário2 = 'BRYN';
console.log ("Nome atualizado do 1º funcionário:", funcionário1);
console.log ("Nome atualizado do 2º funcionário:", funcionário2);

Atribuímos 'Bryn' à segunda variável:

Agora, observe a saída:

O exemplo esclarece que, quando mudamos o valor do funcionário2, observamos que alterar o nome da segunda variável não afeta o valor da primeira variável, o que significa a segunda variável.

Consideraremos outro exemplo para descobrir os dados imutáveis ​​em JavaScript.

var str = "olá";
console.log ("String original:", str);
str.toupppercase ();
console.log ("String após o método touppercase:", str);

Pegamos uma variável de string e atribuímos um valor "Olá", então usamos um método de string "Toupper". Ao executar o programa, observamos que ele não mudou a string porque, no JavaScript Strings, são tipos de dados imutáveis ​​e não podem ser modificados após a criação.

A saída do código acima do rumo será:

Você percebeu que o ToupPercase não altera as letras minúsculas para as letras mais altas, porque não podemos modificar os dados imutáveis ​​após sua criação.

Conclusão

Os dados mutáveis ​​podem ser modificados em qualquer momento, enquanto dados imutáveis ​​contradizem com os dados mutáveis, o que significa que as coisas mutáveis ​​não podem ser alteradas. Neste post, explicamos a diferença entre os tipos de dados primitivos com tipos de referência. Em seguida, entendemos a idéia de dados mutáveis ​​e imutáveis, para esse fim, pegamos alguns exemplos e os implementamos em JavaScript. Finalmente, podemos concluir que, se alterarmos um valor da variável de referência, ele também sofre o valor original, mas a variável primitiva não sofre um monte.