zoukankan      html  css  js  c++  java
  • 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);
    		}
    	});
    })


  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131356.html
Copyright © 2011-2022 走看看