Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] [ERRO] NaN - Undefined

Olá, tudo bem? Quero saber pq o retorno do meu saldo dá NaN e pq o cliente retorna undefined

segue o código:

import {Cliente} from "./Cliente.js"
import { ContaCorrente } from "./ContaCorrente.js"

const cliente1 = new Cliente()
cliente1.nome = 'Alice'
cliente1.cpf = 11122233345
cliente1.rg = 12345678

const cliente2 = new Cliente()
cliente2.nome = 'Ricardo'
cliente2.cpf = 11121132243
cliente2.rg = 99999999

const conta1 = new ContaCorrente()
conta1.cliente = cliente1
conta1.agencia = 102
console.log(conta1)

const conta2 = new ContaCorrente()
conta2.cliente = cliente2
conta2.agencia = 1001
console.log(conta2)

conta2.depositar(100)
conta2.depositar(-1)
console.log(conta2.saldo)

conta2.sacar(200)
console.log(conta2.saldo)
conta2.depositar(500)


conta2.transferir(200, conta1)
conta1.transferir(100, conta2)
console.log(conta2.saldo)
console.log(conta1.saldo)


console.log(cliente1)
console.log(cliente2)
console.log(conta1)
console.log(conta2)
console.log(cliente1.conta1)
import { Cliente } from "./Cliente.js"
export class ContaCorrente{
    agencia
    #cliente


    //ASSESSORES - pode servir para proteger atributos 
    set cliente(novoValor){
        if(novoValor instanceof Cliente){
            this.#cliente = novoValor
        }
    }
    get cliente(){
        return this.#cliente
    }
    //Private Field - # na frente torna o atributo inacessível
    // https://github.com/tc39/proposal-class-fields#private-fields
    #saldo

    //ASSESSOR
    get saldo(){
        return this.#saldo
    }
    //MÉTODO(FUNCTION) SACAR
    sacar(valor){
        if(this.#saldo >= valor){
            this.#saldo -= valor;
            return valor;//serve como break
        }
    }

    depositar(valor){
        //EARLY RETURN
        if(valor <= 0) return;
        this.#saldo += valor;
    }
    // COMPOSIÇÃO DE CLASSES
    transferir(valor, conta){
        const valorSacado = this.sacar(valor)
        conta.depositar(valorSacado)
        conta.cidade = 'São Paulo '
    }
}
export class Cliente{
    nome
    cpf
    rg
}
3 respostas

Se o retorno está retornando NaN, significa que o que você está pedindo para retornar não é um número. E se o client retorna Undefined, é porque você não atribuiu nada à ele.

Eu sei disso Gustavo! Minha dúvida é pq está retornando isso, quando na verdade era p retornar outro resultado...

solução!

Erro estava no console.log, estava assim: console.log(conta1.saldo) / agora está assim: console.log(cliente1.saldo) E cliente dá undefined pq o atributo está como Private Field --> #cliente