js的eval方法

时间:2023-03-08 17:05:06
js的eval方法

eval方法:

检查JScript代码,并且执行.

语法:

eval(codeString);

参数:

codeString是必选项,参数是包含有效的JScript代码的字符串值,这个字符串值将由JScript分析器进行分析和执行.

例子:

        var str='2+3';
document.write(str+"<br/>");
document.write(eval(str));

结果:

js的eval方法

当我们描述的字符串符合JScript代码规范时,使用eval可以执行字符串中的内容.

json:

json的格式是由大括号和冒号构成的名值对.具体参见其他文章.

例子:

        var zs={'id':1,'name':"张三"};

eval和json:

由于ajax的兴起,json这种轻量级的数据格式作为客户端与服务器端之间的传输格式逐渐流行起来.进而产生的问题是:如何将服务器端构建好的 json数据转化为可用Javascript对象.利用eval函数无疑是一种简单而直接的办法.在转化的时候,需要再json字符串外面包装圆括号:

eval("(" + codeString + ")");

为什么要加圆括号呢?

加圆括号的目的是迫使eval函数在评估Javascript代码的时候,强制将括号内的表达式转化为对象,而不是作为一个语句来执行.

举个例子:例如字面量{},如果不加外面的圆括号,那么eval会将大括号识别为Javascript代码块的开始和结束,而不是将其视为一个对象.

执行下面这段代码即可看出区别:

        document.write(eval("{}"));
document.write("<br/>");
document.write(eval("{'张三','李四'}"));
document.write("<br/>");
document.write(eval("({})"));

结果:

js的eval方法

现在,我们看到了第二行的结果,只出现了"李四".原因是eval将{'张三','李四'}作为一个语句来执行,并返回最终值,根据逗号运算符的规则,会返回"李四".

如何解析一个json字符串:

        var codeString="{'id':1,'name':'张三'}";
var zs = eval("("+codeString+")");
document.write(zs.name);
对代码进行调试,可以看到结果如下:
js的eval方法
所以结果应该是:
张三