javascript eval和JSON之间的关系详解编程语言

eval函数的工作原理

eval函数会评估一个给定的含有javascript代码的字符串,并且视图去执行包含在字符串里的表达式或者

一系列的合法的javascript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。

console.info(eval("alert('a');alert('b')")) 
console.info(eval("x=10;y=20;alert(x*y)"));   //200 
console.info(eval("3+6"));   //9

JSON格式
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理 解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

{ 
    "acceptIs": null,  
    "entity": null,  
    "refuseIs": null,  
    "result": { 
        "pageSize": 10,  
        "resultList": [ 
            { 
                "SHNOTE": "法拉利F40",  
                "STATE": "提交",  
                "CTIME": "2013/12/31 13:53:28",  
                "PHONE": "13111050937",  
                "ID": "40288ba54347286501434736c6c60000",  
            },            
        ],    
        "totalPage": 1,  
        "totalSize": 4 
    } 
}

eval和JSON
利用eval函数可以将JSON数据转化为可用的javascript对象。

var datas=eval("("+data+")");

为什么要加括号?
加上圆括号的目的是使eval函数在评估javascript代码的时候强制将括号内的表达式转化为对象,
而不是作为语句来执行。例如对象{},如若不加外层的括号,那么eval会将大括号识别为javascript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。如下:

console.info(eval("{}"));   //undefined  
console.info(eval("({})")); //Object {}

涉及项目代码:

$(document).ready(function(){ 
	$.post('/homea/admin/UserBookView.do', {}, function(data) { 
	    var datas=eval("("+data+")"); 
		for(var i=0;i<datas.result.resultList.length;i++){ 
			var id = datas.result.resultList[i]['ID']; 
			var ctime = datas.result.resultList[i]['CTIME']; 
			var state = datas.result.resultList[i]['STATE']; 
			console.info(id+" "+ctime+" "+state); 
		} 
	}); 
})

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14541.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论