ความแตกต่างระหว่าง console.log และ alert ใน 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)

ฉันพบปัญหานี้

ดังนั้นในตอนท้ายของรหัสเมื่อฉันแจ้งเตือน (เมนู); ฉันได้รับ [object Object]

แต่เมื่อฉันทำ console.log (เมนู); ฉันได้รับ {width: 400, height: 600, title: 'My menu'} ซึ่งเป็นสิ่งที่ฉันต้องการ อะไรทำให้เกิดความแตกต่าง?

คำตอบ

3 IcyBloom Dec 15 2020 at 14:10

นั่นเป็นเพราะmenuตัวมันเองเป็น Object

เมื่อเราใช้การแจ้งเตือนกล่องป๊อปอัปจะเปิดขึ้นพร้อมข้อความที่กำหนดซึ่งคาดว่าจะมีสตริง เมื่อส่งผ่าน Object คุณจะได้รับ[object Object]

ลองalert(JSON.stringify(menu))ดูเอาต์พุตสตริงแบบเต็มแทน

1 Ashish Dec 15 2020 at 14:10

ถ้าคุณอ่านถูกต้องในw3schools Alert ใช้สตริงเป็นพารามิเตอร์และเมนูของคุณไม่ใช่สตริงเป็นวัตถุดังนั้นแทนที่จะแสดงเมนูจะแสดงประเภทของเมนู

คุณสามารถทำสิ่งนี้:

alert(JSON.stringify(menu));