Ao falar sobre imutabilidade o pensamento que nos vem a cabeça é: simples, é só fazer cópia das variáveis ao invés de manipular a mesma.
De fato, a cópia ao invés do reúso dos objetos é um dos pilares da imutabilidade. Mas ao trabalharmos dessa forma, resolveremos o problema de mutação, mas criaremos outro: consumo de memória e processamento excessivos.
Considerando o primeiro cenário (cópia), é possível trabalhar da seguinte maneira:
1 | const arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] |
Ao fazer isso, internamente são criados dois arrays completamente diferentes, porém com alguns valores em comum.
Não seria mais interessante se fosse possível fazer o que aparentemente fazemos com esse código: criar o arr2
“baseado” em arr
, dessa forma otimizando memória?