为了账号安全,请及时绑定邮箱和手机立即绑定

执行eval('({"ok":"true"})')返回了{ok: "true"},什么原理?

执行eval('({"ok":"true"})')返回了{ok: "true"},什么原理?

海绵宝宝撒 2018-09-24 16:14:56
如下图是在Chrome中得到的:问题:首先,str代表的是一个json字符串,这点应该是没疑问的,然后我运行eval('({"ok":"true"})')就返回了{ok: "true"},这里面是怎么实现的?是去看别人写的项目的源码中看到的,不明所以,请赐教~
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

eval函数接受字符串,然后把这个字符串当作js代码去运行,返回运行的结果。

eval('({"ok":"true"})')

相当于运行

({"ok":"true"})

返回对象{ok: "true"}

个人觉得需要注意的点是两边为什么要加括号?
因为{}不仅可以用来声明对象,还表示块级作用域,
如果两边不加括号,会把{}当成块级作用域解析,就会报语法错误;
加上括号,会把{}当作对象声明处理,所以就会生成一个新的对象,不会报语法错误。


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 645 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信