色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

JSON 和 JavaScript eval使用說明

JSON 格式可以使對(duì)象(object)、數(shù)組(array)、值(value)、字符串(string)、數(shù)值(number)。
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
var user = {
"Name":"Andy",
"Sex" :"man",
"Age" :"20",
"Phone":{"mobilephone":"123456789","telephone":"1234-12345678"},
"baby":[{"big":"xiaohong"},{"middle":"xiaoming"},{"small":"xiaoli"}] //包含數(shù)組
}
alert(user.Name);
alert(user.Phone.mobilephone);
alert(user.baby[0].big);
user.baby[0].big = "--";//修改了 JSON 值
alert(user.baby[0].big);
</script>

參考:http://www.json.org/json-zh.html



  下面來看看 JavaScript 的 eval 函數(shù)。
  eval 函數(shù)會(huì)評(píng)估給定的一個(gè)JavaScript代碼的字符串,并試圖去執(zhí)行包含在字符串里的表達(dá)式或者一系列的合法的 JavaScript 語句。eval 函數(shù)將把最后一個(gè)表達(dá)式或者語句包含的值或引用作為返回值。

代碼
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
var bar = "bar";
var foobar = eval('"foo"+bar');
alert(bar + foobar);//執(zhí)行語句
foobar = eval('if(bar = "bar"){bar = "foo-bar";}else{bar = "bar-foo";}');
alert(foobar);//返回語句中包含的值
</script>

  JSON 和 對(duì)象字面量(Object Literals)的區(qū)別:JSON 的名字部分嚴(yán)格用引號(hào)+名字來表示。
代碼
復(fù)制代碼 代碼如下:
<script type="text/Javascript">
//對(duì)象字面量
var objectLiteral = {
name:"Objector.L",
age:"24",
special:"JavaScript",
sayName:function(){
return this.name;
}
};
//JSON 對(duì)象
var jsonFormat = {
"summary":"Blogs",
"blogrolls":[
{
"title":"Explore JavaScript",
"link":"http://example.com"
},
{
"title":"Explore JavaScript",
"link":"http://example.com"
}
]
};
</script>

  由于 Ajax 的興起, JSON 這種輕量級(jí)的數(shù)據(jù)格式作為客戶端與服務(wù)器端之間傳輸?shù)母袷街饾u流行起來,進(jìn)而出現(xiàn)的問題是如何將服務(wù)器端構(gòu)建好的 JSON 數(shù)據(jù)轉(zhuǎn)換為可用的 JavaScript 對(duì)象,利用 eval 函數(shù)無疑是一種簡(jiǎn)單而直接的方法。在轉(zhuǎn)化的時(shí)候需要將 JSON 字符串的外面包裝一層園括號(hào):

var jsonObject = eval("("+ jsonFormat +")")

  加園括號(hào)的目的是迫使 eval 函數(shù)在評(píng)估 JavaScript 代碼的時(shí)候強(qiáng)制將括號(hào)內(nèi)的表達(dá)式(expression)轉(zhuǎn)換為對(duì)象,而不是作為語句(statement)來執(zhí)行。舉一個(gè)例子,例如對(duì)象字面量{},如若不佳加外層的括號(hào),那么eval會(huì)將大括號(hào)之別為JavaScript代碼塊的開始結(jié)束標(biāo)記機(jī),那么{}將被認(rèn)為是執(zhí)行了一句空語句。所以下面兩個(gè)執(zhí)行結(jié)果是不同的:


復(fù)制代碼 代碼如下:
alert(eval("{}")); //return undefined
alert(eval("({})")); //return [object Object]

  JSON 格式的名字部分為什么要加引號(hào)?因?yàn)閑val函數(shù)會(huì)將{foo:"bar"}解釋成合法的JavaScript 語句,而非表達(dá)式。但人們往往是想讓eval將這段代碼解釋成一個(gè)對(duì)象。所以JSON 格式會(huì)強(qiáng)制你去在名字的外側(cè)加上引號(hào),再結(jié)合圓括號(hào),eval就不會(huì)錯(cuò)誤的將JSON解釋成代碼塊。
  
復(fù)制代碼 代碼如下:
//eval 錯(cuò)誤解析語義
alert(eval('{foo:"bar"}')); //return "bar",incorrect
//eval 正確解析JSON
alert(eval('({"foo":"bar"})'));//return JSON object,correct

JavaScript技術(shù)JSON 和 JavaScript eval使用說明,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 保靖县| 刚察县| 偃师市| 海兴县| 遵化市| 通渭县| 清苑县| 山东省| 兴国县| 金秀| 新龙县| 同心县| 纳雍县| 灵宝市| 内江市| 灵璧县| 商丘市| 甘孜| 江口县| 杨浦区| 吉安市| 东乡| 荔波县| 镇沅| 沙湾县| 公主岭市| 加查县| 馆陶县| 忻城县| 惠州市| 博爱县| 景德镇市| 金塔县| 通河县| 芒康县| 襄樊市| 贵州省| 车险| 桓台县| 曲阳县| 五台县|