JS eval()函数参数问题

Just_Be_Zero 2016-01-08 03:27:32
var value = 1;
var str = '{
"name" : "jifeng",
"company" : "taobao",
"value" : ++value
}';

C1:
eval(str);
// 参数错误
C2:
eval("str");
// 直接返回原字符串 —— value : ++value
// value = 1
C3:
eval("(str)");
// 直接返回原字符串 —— value : ++value
// value = 1
C4:
eval("'str'");
// 返回字符串str
C5:
eval('('+str+')');
// 执行js —— value : 2
// value = 2

W3C中对于参数说明:


如上
Q1:
C1中str为何报错,不是字符串对象吗
Q2:
C3和C5的区别,其中()的作用是什么
Q3:
C3和C4为何不是直接返回“str”字符串
...全文
294 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2016-01-08
  • 打赏
  • 举报
回复
Q1: C1中str为何报错,不是字符串对象吗 当 { 出现在一条语句首位时会被当作定义“语句块”,而不是定义对象。你str中的代码不是“语句块”当然会报错。 Q2: C3和C5的区别,其中()的作用是什么 C3是执行 (str) 这个代码,就是获取一个“被()括起来的变量”的值。这里有没有()都一样。 C5是先取出str变量的值,在这个值的字符串前后加上括号组成新的字符串,然后执行这个新的字符串中的代码。这里要加上括号是为了避免C1中 { 出现在一条语句首位的情况。 Q3: C3和C4为何不是直接返回“str”字符串 C4是直接返回“str”字符串啊,C3上面已经解释了

87,984

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧