前端/移动开发面试题更新 2026-08-05

请用 JavaScript 手写一个与原生 JSON.stringify 行为一致的实现,并给出完整代码。

前端/移动开发编码实现技术原理问题排查JavaScriptJSON

考察说明

考查对 JSON 序列化底层机制的理解以及递归处理、类型判断和边界情况的代码实现能力。

回答思路

  1. 【回答框架 1】核心是把输入值按类型递归序列化:先处理基本类型(字符串、数字、布尔、null),再处理对象和数组。对于函数、undefined、symbol,在对象属性值和数组中要区别对待。
  2. 【回答框架 2】字符串需要转义特殊字符如双引号、反斜杠、换行符等;数字要处理 Infinity、NaN 转为 null。
  3. 【回答框架 3】对象和数组需递归调用自身,并跳过值为函数或 undefined 的属性;数组中的 undefined、函数、symbol 序列化为 null。
  4. 【回答框架 4】要能处理 toJSON 方法,优先调用它获取可序列化的值。循环引用时需检测并抛出 TypeError。
  5. 【回答框架 5】实现时注意键的排序(一般按插入顺序)和缩进参数(可选)。
  6. 【关键点 1】必须递归处理嵌套对象与数组
  7. 【关键点 2】字符串转义与特殊数字处理
  8. 【关键点 3】toJSON 方法优先调用
  9. 【关键点 4】循环引用检测并报错