1
resposta

Como crio um método void em JavaScript ?

/*
Criei esse método abaixo para printar os dados na classe conta e ficar um pouco mais limpo no arquivo index.js;
Porém se crio ele sem retorno fica dando undefined no final de cada print como abaixo:

Método sem retorno:
printDados() {
        console.log(`Agência: ${this.agencia} \nSaldo inicial: ${this.saldoInicial} \nCliente: ${this.cliente}`);
}

Resultado:

Conta Corrente
Agência: 1234
Saldo inicial: 1000
Cliente: Marco
CPF: 123456777
undefined

Conta Poupança
Agência: 1234
Saldo inicial: 40
Cliente: Marco
CPF: 123456777
undefined
*/

//Método com retorno
printDados() {
        return `Agência: ${this.agencia} \nSaldo inicial: ${this.saldoInicial} \nCliente: ${this.cliente}`;
}

Resultado:
/*
Conta Corrente
Agência: 1234       
Saldo inicial: 1000 
Cliente: Marco      
CPF: 123456777

Conta Poupança
Agência: 1234
Saldo inicial: 40
Cliente: Marco
CPF: 123456777
*/

Quando o método está sem retorno (somente com console.log();), adiciono e sobrescrevo nas classes filhas sem problemas e printa com undefined, porém se eu crio o método com retorno na classe mãe tenho que retornar (return super.printDados();) na classe filha também. ficando assim

//Com retorno classe mãe
printDados() {
        return `Agência: ${this.agencia} \nSaldo inicial: ${this.saldoInicial} \nCliente: ${this.cliente}`;
}

//Com retorno classes filhas
printDados() {
        console.log("Conta Poupança");
        return super.printDados();
}

printDados() {
        console.log("Conta Corrente");
        return super.printDados();
}

//Sem retorno classe mãe
printDados() {
        console.log(`Agência: ${this.agencia} \nSaldo inicial: ${this.saldoInicial} \nCliente: ${this.cliente}`);
}

//Sem retorno classes filhas
printDados() {
        console.log("Conta Poupança");
        super.printDados();
}

printDados() {
        console.log("Conta Corrente");
        super.printDados();
}

//PS: LEMBRANDO QUE SEM RETORNO FICA RETORNANDO UNDEFINED NO FINAL COMO MOSTREI ACIMA
1 resposta

Olá, Marco, tudo bem?

Primeiramente nos desculpe a demora a responder!

Acredito que você não deseja que fique aparecendo undefined no console, certo?

Bem, vamos analisar o método sem retorno:

printDados() {
        console.log(`Agência: ${this.agencia} \nSaldo inicial: ${this.saldoInicial} \nCliente: ${this.cliente}`);
}

Agora digamos que você tenha uma instância de ContaCorrente chamada conta. O que provavelmente está acontecendo é que você está chamando o método da seguinte maneira:

console.log(conta.printDados());

O que acontecerá é que primeiro será executado o console.log dentro do método, mostrando as informações da conta. Em seguida, será executado o console.log externo, que irá imprimir undefined, já que o método não tem retorno.

Para resolver isso sem adicionar um retorno no método, basta executar a função sem usar console.log:

conta.printDados();

Se não tiver sido esse o problema, pode nos falar que estaremos aqui para te ajudar!

Quando ao tipo void, ele não existe no javascript, o que mais se assemelharia seria o próprio undefined mesmo! E sempre que tentamos dar um console.log em um função sem retorno, o resultado sempre é undefined.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software