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);
    		}
    	});
    })


  • 相关阅读:
    MySQL系列(四)--数据库结构优化、范式化与反范式化
    Java数据结构和算法(二)--队列
    Java数据结构和算法(一)--栈
    MySQL系列(三)--MySQL存储引擎
    Java集合(六)--ArrayList、LinkedList和Vector对比
    Java集合(五)--LinkedList源码解读
    Java集合(四)--基于JDK1.8的ArrayList源码解读
    P1048 采药(洛谷,动态规划递推,01背包原题)
    P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)
    语法摔过的坑(用来给自己看的,粗糙,勿点)
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131356.html
Copyright © 2011-2022 走看看