eval和json.parse的使用
@H_502_3@
@H_502_3@
@H_502_3@
eval:来源于官网
@H_502_3@
定义和用法
@H_502_3@
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
@H_502_3@
语法: eval(string)
@H_502_3@
参数 描述
@H_502_3@
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
@H_502_3@
返回值
@H_502_3@
通过计算 string 得到的值(如果有的话)。
@H_502_3@
说明
@H_502_3@
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
@H_502_3@
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
@H_502_3@
eg:
@H_502_3@
<script type="text/javascript">
@H_502_3@
eval("x=10;y=20;document.write(x*y)")
@H_502_3@
document.write(eval("2+2"))
@H_502_3@
var x=10
@H_502_3@
document.write(eval(x+17))
@H_502_3@
</script>
@H_502_3@
输出:
@H_502_3@
200
@H_502_3@
4
@H_502_3@
27
@H_502_3@
处理json数据
@H_502_3@
1、eval
@H_502_3@
根据不同的json格式,一般有两种方式
@H_502_3@
json为json数据
@H_502_3@
转化json数据,使用方法统一
@H_502_3@
var dataObj = eval("("+json+")");
@H_502_3@
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行
@H_502_3@
将json数据转换为json对象
@H_502_3@
(1)含有“节点”的json数据
@H_502_3@
var json = {
@H_502_3@
root:
@H_502_3@
[
@H_502_3@
{name:'1',value:'0'},
@H_502_3@
{name:'2',value:'1'},255)">{name:'3',value:'2'},255)"> ]
@H_502_3@
}";
@H_502_3@
如果获取对应的name和value的值,可以使用
@H_502_3@
$(dataObj.root).each(function(i,item){
@H_502_3@
var str = "name:"+item.name+",value:"+item.value;
@H_502_3@
})
@H_502_3@
(2)不含有“节点”的json数据
@H_502_3@
var json = {"name":"1","name":"2","name":"3"}
@H_502_3@
使用$(dataObj).each(function(i,255)">})获取对应的数据
@H_502_3@
注意:eval使用比较危险,能不用最好就不要用,以免徒增不必要的麻烦
@H_502_3@
2、JSON.parse(String,function())
@H_502_3@
Strign:必选参数,为json数据
@H_502_3@
function():可选参数,如果不为空,则为对象的每个成员调用词函数
@H_502_3@