以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!

BFE.devAI解答 - JavaScript 代码题
144. 序列化和反序列化JSON不支持的数据类型

实现该功能的方法是通过JSON.stringify()函数的第二个参数,在其中添加一个自定义的replacer函数,对需要序列化的数据进行处理,再将处理后的结果传给JSON.parse()进行反序列化。

下面给出代码实现:

function serialize(obj) {  return JSON.stringify(obj, (key, value) => {    // 处理 BigInt 类型    if (typeof value === 'bigint') {      return value.toString() + 'n';    }    // 处理 undefined 和 NaN    if (value === undefined || Number.isNaN(value)) {      return '__' + String(value);    }    // 其他数据类型直接返回    return value;  });}function deserialize(str) {  return JSON.parse(str, (key, value) => {    // 判断是否是 BigInt 类型    if (typeof value === 'string' && /^-?\d+n$/.test(value)) {      return BigInt(value.slice(0, -1));    }    // 判断是否是 undefined 或 NaN    if (typeof value === 'string' && value.slice(0, 2) === '__') {      return (value === '__undefined') ? undefined : NaN;    }    // 其他数据类型直接返回    return value;  });}

该函数可以成功实现对BigInt、undefined和NaN的序列化和反序列化,满足题目要求。