特性
1.undefined、任意的函数以及symbol值,出现在非数组对象的属性值中时在序列化过程中会被忽略
2.undefined、任意的函数以及symbol值出现在数组中时会被转换成 null。
3.undefined、任意的函数以及symbol值被单独转换时,会返回 undefined
JSON.stringify(undefined) // undefined
JSON.stringify(null) // null
JSON.stringify({val:undefined}) // {}
JSON.stringify({val:null}) // {"val":null}
JSON.stringify([undefined,null,21]) // [null,null,21]
JSON.stringify(()=>{}) // undefined
JSON.stringify(Symbol('DZY')) // undefined
NaN 和 Infinity 格式的数值及 null 都会被当做 null。
JSON.stringify({
a: NaN,
b: Infinity,
c: null
})
// '{"a":null,"b":null,"c":null}'
转换 BigInt 类型的值会抛出错误
const BigIntVal = BigInt(90071992135645867651)
console.log(JSON.stringify(BigIntVal ))
// TypeError: Do not know how to serialize a BigInt