Foi passado no curso um artigo em inglês, https://medium.com/@ethannam/javascripts-memory-model-7c972cd2c239 entendi o porquê os arrays podem ser usados como "const" e não precisam de "let", visto que o const não sofre alteração em seu valor (de referência) na Stack. E entendi como um let quando alterado seu valor, ele cria outro espaço na memória, outro endereço, para o novo valor. Nada nesse caso é sobrescrito.
Quando o Bugan tenta dar o exemplo, não me fez muito sentido, ainda não entendi de fato qual é o objeto, e o que é ou não um tipo não primitivo quando se trata de objetos.
Aqui está o código do arquivo index
let valor = 200;
contaCorrenteRicardo.transferir(valor, conta2);
console.log("valor: ", valor);
console.log(conta2);
e o do método que foi testado
transferir (valor, conta) {
conta.cidade = "São Paulo";
const valorSacado = this.sacar(valor);
conta.depositar(valorSacado);
valor = 20
Conclusão que se chega no vídeo: "Perceba que, apesar do atributo cidade ter sido adicionado à conta2, o valor não foi alterado."
O que realmente não me faz sentido é que no caso do Método, o valor
só é alterado depois que já foi feito o saque e depósito, por isso não alterou-se nada, não por causa de seu tipo (primitivo ou não). Quando eu jogo no meu código esse valor = 20 antes da ativação de sacar e depositar, eu tenho de fato a alteração do valor de 200 para 20.
Será que isso era mesmo para acontecer com tipos não primitivos?