1
resposta

ReferenceError: valorTransferencia is not defined

index.html

//criação de uma classe que representa os parâmetros necessários do cliente

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


//criação de um novo cliente
const cliente1 = new Cliente();
// atribuindo valores a  variáveis da Class Cliente utilizando a variavel cliente1
cliente1.nome = "Claudio";
cliente1.cpf = 11122233301;
const cliente2 = new Cliente();
// atribuindo valores a  variáveis da Class Cliente utilizando a variavel cliente2
cliente2.nome = "Rosana";
cliente2.cpf = 555533301;
// atribuindo valores a  variáveis da Class Cliente
//
//exibindo no console a variavel cliente1 e cliente2


const contaCorrenteClaudio = new ContaCorrente();
contaCorrenteClaudio.cliente = cliente1;
contaCorrenteClaudio.agencia = 1001;
contaCorrenteClaudio.depositar(1000);
console.log(contaCorrenteClaudio._saldo)


const contaCorrenteRosana = new ContaCorrente();
contaCorrenteRosana.cliente = cliente2;
contaCorrenteRosana.agencia = 1001;
console.log("valor disponivel "+contaCorrenteRosana._saldo);


contaCorrenteClaudio.transferir(600,contaCorrenteRosana);
console.log(contaCorrenteRosana._saldo);
console.log(contaCorrenteClaudio._saldo);
console.log(valorTransferencia);
console.log(valorDepositado);
console.log(valorSacado);
/*
function sacarDinheiro(valorDoSaque) {
    if (valorDoSaque > this.saldo) {
        console.log("Voce ainda na possui o valor suficiente para esse saque de R$:" + valorDoSaque);

    } else if (valorDoSaque <= contaCorrenteClaudio.saldo) {
        contaCorrenteClaudio.saldo += -valorDoSaque
        console.log("Voce sacou " + valorDoSaque + " seu saldo atual e de " + contaCorrenteClaudio.saldo);
    } else if (valorDoSaque == undefined) {
        console.log("Error valor nao digitado")
    }
    console.log(valorDoSaque);

}
sacarDinheiro();
*/

ContaCorrente.js

export class ContaCorrente {
    agencia;
    cliente;
    _saldo = 0;
    sacar(valorSaque) {
        if (valorSaque >= this._saldo) {
            console.log("Voce ainda nao possui o valor suficiente para esse saque de " + valorSaque + " R$ ");
        } else {
            this._saldo -= valorSaque;
            console.log("Voce sacou " + valorSaque + " R$ " + "seu saldo atual e de " + this._saldo + " R$ ");
            return valorSaque;
        }
    }
    depositar(valorDeposito) {
        if (valorDeposito > 0) {
            this._saldo += valorDeposito;
            console.log("Voce Depositou " + valorDeposito + " R$ " + "seu saldo atual e de " + this._saldo + " R$ ");
            return valorDeposito;
        }

    }
    //
    transferir(valorTransferencia,conta){
        const valorSacado  = this.sacar(valorTransferencia);
        conta.depositar(valorSacado)
        return valorTransferencia;
    }
}

erro code

Voce Depositou 1000 R$ seu saldo atual e de 1000 R$ 
1000
valor disponivel 0
Voce sacou 600 R$ seu saldo atual e de 400 R$ 
Voce Depositou 600 R$ seu saldo atual e de 600 R$ 
600
400
file:///c:/Code/Alura/JavaScript/OO%20Javascript/index.js:37
console.log(valorTransferencia);
            ^

ReferenceError: valorTransferencia is not defined
    at file:///c:/Code/Alura/JavaScript/OO%20Javascript/index.js:37:13
    at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:337:24)
    at async loadESM (node:internal/process/esm_loader:88:5)
    at async handleMainPromise (node:internal/modules/run_main:61:12)

eu acho que o erro esta na função transferir pois o console.log(valorTransferencia) não esta sendo definido, sendo que ele e definido na contaCorrenteClaudio.transferir(600,contaCorrenteRosana);

1 resposta

No arquivo index.js não há nenhuma declaração das variáveis valorTransferencia, valorDepositado e valorSacado.

Essas variáveis foram definidas apenas no escopo dos métodos da classe ContaCorrente, ou seja, para acessar esses valores para o contexto do arquivo index.js, é necessário retornar esses valores de alguma maneira.

Para o log do valor depositado funcionar do jeito que você esperava, você precisa passar esse valor para a variável da seguinte forma (Considerando o que você desenvolveu nos métodos da classe da ContaCorrente):

const vTransferencia = contaCorrenteClaudio.transferir(600, contaCorrenteRosana);

console.log(contaCorrenteRosana._saldo);
console.log(contaCorrenteClaudio._saldo);
console.log(vTransferencia);

Agora a variável vTransferencia possui o valor que é retornado no método transferir() da classe ContaCorrente.

A variável vTransferencia poderia se chamar valorTransferencia, mas é recomendado evitar essa repetição de nome justamente para prevenir esse tipo de confusão.

Com esse ponto resolvido, os dois logs seguintes também retornarão um erro justamente pelos motivos que citei no início, mas como, tecnicamente, elas fazem referência ao mesmo método de transferência, acredito que seja redundante corrigi-las, bastando remover esse trecho do seu código.