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

Dá um undefined ao final

carroAuto = {          
    marca: 'Fiat',
    modelo: 'Pulse',
    ano: 2025,
    cor: 'Vinho',
    ligado: true,
    ligar: function () {
        if (!this.ligado) {
            this.ligado = true;
            return 'O carro está ligado';
        } else {
            return 'O carro já está ligado'
        }
    },
    desligar: function () {
        if (this.ligado) {
            this.ligado = false;
            return 'O carro está desligado';
        } else {
            return 'O carro já está ligado'
        }
    },
    exibirDetalhes: function() {
        const estado = this.ligado? 'ligado' : 'desligado';
           console.log(`Marca: ${this.marca}, Modelo: ${this.modelo}, Ano: ${this.ano}, Cor: ${this.cor} e Estado: ${estado}`);
    }
}

//console.log(carroAuto.ligar());
//console.log(carroAuto.desligar());   
console.log(carroAuto.exibirDetalhes());

No terminal aparece a impressão correta da função carroAuto.exibirDetalhes(), mas na linha seguinte também surge um 'undefined', não estou entendendo porque ele aparece e nem como resolver.

2 respostas
solução!

Boa tarde, @Anna Karenina Chaves Delgado, Tudo bem ?

O undefined aparece porque a função exibirDetalhes() usa console.log() para imprimir os detalhes, mas não retorna nada explicitamente. Em JavaScript, quando uma função não retorna nada, o valor retornado por padrão é undefined.

Solução correta: Ajuste a função para que ela retorne a string em vez de apenas imprimir com console.log():

exibirDetalhes: function() {
    const estado = this.ligado ? 'ligado' : 'desligado';
    return `Marca: ${this.marca}, Modelo: ${this.modelo}, Ano: ${this.ano}, Cor: ${this.cor} e Estado: ${estado}`;
}

E ao chamar a função:

console.log(carroAuto.exibirDetalhes());

Agora, a string será retornada pela função e exibida corretamente, sem o undefined extra.

OU

exibirDetalhes: function() {
    const estado = this.ligado? 'ligado' : 'desligado';
       console.log(`Marca: ${this.marca}, Modelo: ${this.modelo}, Ano: ${this.ano}, Cor: ${this.cor} e Estado: ${estado}`);
}
carroAuto.exibirDetalhes();

Ambos vao funcionar

Abs!!

Obrigada por me auxiliar!