什么情况下JSON.parse()的结果的数据类型会是string

查看项目代码时,看到前辈写了一个JSON格式的字符串转换为JS中的数据结构的方法,但其中加了一个判断,即当JSON.parse(str)的结果是stirng类型,具体判断如下:

 handleTransObj = (str) => {
    let obj = null;
    if (!str) {
      return obj;
    }
    obj = JSON.parse(str);
    if (typeof obj === 'string') {
      obj =  eval(obj);
    }
    return obj;
  }

有两点不太理解,

  1. 什么情况下 JSON.parse(str)的结果的数据类型会是string?
  2. 判断中执行的语句 obj = eval(obj); 是什么意思?有什么作用?
阅读 5k
2 个回答

比如JSON.parse('"foo"')返回的就是字符串。
至于eval(obj),个人的猜测是你们这个函数传入的str有特殊的地方

str = JSON.stringify(new Date)
dtm = JSON.parse(str)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题