JavaScript中eval,函数的使用

eval()函数可以将字符串解析为javascript代码执行。

var str = "alert('hello world');";
alert(str);  //alert('hello world');
eval(str);  //hello world

eval()函数常用于将json字符串解析为json对象。

var jsonStr = "{'name':'bossLiu','age':27}";
alert(jsonStr.name);  //undefined
var jsonObject = eval("("+jsonStr+")");
alert(jsonObject.name);  //bossLiu

注意:由于json对象是用{}括起来的,在javascript中会被当成语句块处理,所以必须将其强制转换成表达式,所以在jsonStr的两边要加上()

在ajax中常常使用json作为传输数据,由于返回的数据是字符串,所以需要使用eval()函数解析。

json.txt内容如下:

{
    "person": {
        "name": "bossLiu",
        "age": 27
    }
}
<!DOCTYP html>
<html>
<head>
<meta charset="utf-8">
<script>
function ajax() {
    var ajax = new XMLHttpRequest();
    ajax.open("GET","json.txt",true);
    ajax.send();
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            if (ajax.status == 200 || ajax.status == 304) {
                var result = ajax.responseText;
                var object = eval("("+result+")");
                document.getElementsByTagName("div")[0].innerHTML = object.person.name;
            }
        }
    }
}
</script>
</head>
<body>
<button onclick="ajax()">点我</button>
<div></div>
</body>
</html>