迴圈物件值

並非所有物件都可以轉換為 JSON 字串。當物件具有迴圈自引用時,轉換將失敗。

這通常是分層資料結構的情況,其中父級和子級都相互引用:

const world = {
  name: 'World',
  regions: []
};

world.regions.push({
  name: 'North America',
  parent: 'America'
});
console.log(JSON.stringify(world));
// {"name":"World","regions":[{"name":"North America","parent":"America"}]}

world.regions.push({
  name: 'Asia',
  parent: world
});

console.log(JSON.stringify(world));
// Uncaught TypeError: Converting circular structure to JSON

一旦程序檢測到一個迴圈,就會引發異常。如果沒有迴圈檢測,則字串將無限長。