Różnica między console.log i alert w javascript

Dec 15 2020
let menu = {
    width: 200,
    height: 300,
    title: "My menu"
};

function multiplyNumeric(obj) {
    for (let key in obj) {
        if (typeof obj[key] == "number") {
            obj[key] *= 2;
        }
    }
}

multiplyNumeric(menu);

alert(menu);
console.log(menu)

Napotkałem ten problem.

więc na końcu kodu, kiedy wykonuję alert (menu); Otrzymuję [obiekt Object].

ale kiedy robię console.log (menu); Otrzymuję {width: 400, height: 600, title: „Moje menu”}. Właśnie tego chciałem. Więc co powoduje różnicę?

Odpowiedzi

3 IcyBloom Dec 15 2020 at 14:10

Dzieje się tak, ponieważ menusama jest przedmiotem.

Kiedy używamy alert, otwiera się wyskakujące okienko z podaną wiadomością, która oczekuje String. Gdy zostanie przekazany z przedmiotem, zamiast tego otrzymasz[object Object]

Spróbuj alert(JSON.stringify(menu))zamiast tego zobaczyć pełne dane wyjściowe

1 Ashish Dec 15 2020 at 14:10

Jeśli dobrze czytasz na w3schools . Alert przyjmuje ciąg jako parametr, a twoje menu nie jest łańcuchem, lecz obiektem, więc zamiast pokazywać menu, pokazuje typ menu

możesz zrobić coś takiego:

alert(JSON.stringify(menu));