Unterschied zwischen console.log und alert in 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)

Ich bin auf dieses Problem gestoßen.

also am Ende des Codes, wenn ich alarmiere (Menü); Ich bekomme [Objekt Objekt].

aber wenn ich console.log (Menü) mache; Ich erhalte {Breite: 400, Höhe: 600, Titel: 'Mein Menü'}. Welches ist, was ich wollte. Was verursacht den Unterschied?

Antworten

3 IcyBloom Dec 15 2020 at 14:10

Das liegt daran, dass es menusich um ein Objekt handelt.

Wenn wir alert verwenden, wird ein Popup-Fenster mit einer bestimmten Nachricht geöffnet, die einen String erwartet. Wenn Sie mit einem Objekt übergeben werden, erhalten Sie stattdessen[object Object]

Versuchen Sie alert(JSON.stringify(menu))stattdessen, die vollständige String-Ausgabe anzuzeigen

1 Ashish Dec 15 2020 at 14:10

Wenn Sie auf w3schools richtig lesen . Bei der Warnung wird eine Zeichenfolge als Parameter verwendet, und Ihr Menü ist keine Zeichenfolge, sondern ein Objekt. Anstatt das Menü anzuzeigen, wird der Menütyp angezeigt

Sie können so etwas tun:

alert(JSON.stringify(menu));