eval()函数的特点和作⽤
eval():
作⽤:它的作⽤是把对应的字符串解析成js代码并运⾏(将json的字符串解析成为JSON对象);
特点:它是⼀个全局函数;
缺点:1>在该函数内部申明的变量都是全局变量,且申明的变量不会提升;
2>耗性能,执⾏2次,⼀次解析成js语句,⼀次执⾏js代码;
举例:
1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串⽅式接受,那么需要做⼀次对象化处理,就是将字符串放到eval()函数中执⾏如下:
已知服务器返回JSON字符串集合:
var data="{
student:[
{name:'⼩明',age:17},
{name:'⼩红',age:16},
{name:'⼩鹏',age:18}
]
}";
var dataObj=eval("("+data+")");
注意:这⾥在data外添加"("+**+")"是由于json是以"{}"的⽅式包裹的,js会将以"{}"包裹的代码当成语句处理,所以在调⽤该函数的时候需要先强制性转换⼀种表达⽅式,
alert(eval("{}"); // return undefined;
alert(eval("({})");// return object[Object];
2..对于服务器返回的JSON字符串,如果jquery异步请求将type(⼀般为这个配置属性)设为“json”,或者利⽤$.getJSON()⽅法获得服务器返回,那么就不需要eval()⽅法了,因为这时候得到的结果已
经是json对象了,只需直接调⽤该对象即可,这⾥以$.getJSON⽅法为例说明数据处理⽅法:
length);//输出root的⼦对象数量
$.each(dataObj.student,fucntion(idx,item){
if(idx==0){
return true;
}
//输出每个student⼦对象的名称和值
alert("name:"+item.name+",age:"+item.age);
})
注:对于⼀般的js⽣成json对象,只需要将$.each()⽅法替换为for语句即可,其他不变。
$.getJSON("www.phpstudent/",{param:"gaoyusi"},function(data){
/
/此处返回的data已经是json对象
//以下其他操作同第⼀种情况
$.each(data.student,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
jquery是什么有什么作用}
alert("name:"+item.name+",age:"+item.age);
});
});
这⾥特别需要注意的是⽅式1中的eval()⽅法是动态执⾏其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论