查看项目代码时,看到前辈写了一个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;
}
有两点不太理解,
- 什么情况下 JSON.parse(str)的结果的数据类型会是string?
- 判断中执行的语句
obj = eval(obj);
是什么意思?有什么作用?
比如
JSON.parse('"foo"')
返回的就是字符串。至于
eval(obj)
,个人的猜测是你们这个函数传入的str
有特殊的地方