Differenza tra console.log e 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)

Mi sono imbattuto in questo problema.

quindi alla fine del codice quando faccio alert (menu); Ottengo [Object Object].

ma quando faccio console.log (menu); Ottengo {larghezza: 400, altezza: 600, titolo: 'Il mio menu'}. Che è quello che volevo. Allora qual è la causa della differenza?

Risposte

3 IcyBloom Dec 15 2020 at 14:10

Questo perché esso menustesso è un oggetto.

Quando usiamo alert, si apre una finestra pop-up con un dato messaggio, che si aspetta una stringa. Quando viene passato con un oggetto, otterrai invece[object Object]

Prova alert(JSON.stringify(menu))invece a vedere l'output completo di stringhe

1 Ashish Dec 15 2020 at 14:10

Se leggi correttamente su w3schools . Alert prende una stringa come parametro e il tuo menu non è una stringa, è un oggetto, quindi invece di mostrare menu mostra il tipo di menu

puoi fare qualcosa del genere:

alert(JSON.stringify(menu));