หลังจากโคลนอาร์เรย์ JS โดยใช้ JSON.parse & JSON.stringify เหตุใดค่าที่ "ไม่ได้กำหนด" ของอาร์เรย์จึงแปลงเป็น "null" [ซ้ำ]

Aug 17 2020
var arr1 = [1, 2, 3, undefined, 4, 5];
var arr2 = JSON.parse(JSON.stringify(arr1));
console.log(arr2);

ผลลัพธ์ของโค้ดด้านบนจะเป็น ....

[1, 2, 3, null, 4, 5]

ทำไมมันถึงแปลงค่าที่ 4 จาก "ไม่ได้กำหนด" เป็น "null"?

คำตอบ

2 Iwrestledabearonce. Aug 17 2020 at 20:24

เนื่องจากundefinedเป็นประเภท Javascript ไม่มีundefinedใน JSON

ตามข้อกำหนด :

JSON สามารถแสดงประเภทดั้งเดิมได้สี่ประเภท (สตริงตัวเลขบูลีนและ null) และประเภทโครงสร้างสองประเภท (อ็อบเจ็กต์และอาร์เรย์)