undefined
、任意的函数以及symbol
作为对象属性值时JSON.stringify()
对跳过(忽略)它们进行序列化undefined
、任意的函数以及symbol
作为数组元素值时,JSON.stringify()
将会将它们序列化为null
undefined
、任意的函数以及symbol
被JSON.stringify()
作为单独的值进行序列化时,都会返回undefined
- map set 作为对象属性、数组元素、或本身时,
JSON.stringify()会将它转为{}
- 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中,因为有undefined、函数、Symbol的存在。
- 会被toJSON(忽略大小写)方法覆盖,包括里面的元素(例如new Date()),Symbol.prototype.toJSON也不行
NaN
和Infinity
格式的数值及null
都会被当做null JSON.stringify({a:-Infinity+Infinity+1}) "{"a":null}"
- 布尔值、数字、字符串的包装对象在序列化过程中会自动拆箱
- 其他类型的对象,包括 Map/Set/WeakMap/WeakSet,仅会序列化可枚举的属性。
-
// 不可枚举的属性默认会被忽略:
// 不可枚举的属性默认会被忽略: JSON.stringify( Object.create( null, { x: { value: 'json', enumerable: false }, y: { value: 'stringify', enumerable: true } } ) ); // "{"y":"stringify"}"
-
-
遇到循环引用时,JSON.parse(JSON.stringify())会报错
-
Symbol做属性会被忽略,第二个参数replacer来控制也不行
前端面试题
最新推荐文章于 2022-11-09 09:05:16 发布