麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

Ajax中解析Json的兩種方法對比分析

2019-11-20 12:09:23
字體:
來源:轉載
供稿:網友

eval();  //此方法不推薦

JSON.parse();  //推薦方法

一、兩種方法的區別

我們先初始化一個json格式的對象:

  var jsonDate = '{ "name":"周星馳","age":23 }'  var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法  var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法

然后在控制臺調用:

  console.log( jsonObj.name );  // 兩種方法都可以正確輸入 周星馳

那么問題來了 兩種方法有什么區別呢?(下面我們稍微把代碼改動一下,藍色字體為修改部分)

  var jsonDate = '{ "name":alert("hello"),"age":23 }'  var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法  console.log( jsonObj.age ); //會先執行“alert”輸出“hello” 然后才輸出 23

換“JSON.parse();”方法:

  var jsonDate = '{ "name":alert("hello"),"age":23 }'  var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法  cosole.log( jsonobj.age ) // 報錯 這個錯誤告訴我們這個字符串是不合法的

小結:“eval();”方法解析的時候不會去判斷字符串是否合法,而且json對象中的js方法也會被執行,這是非常危險的;而“JSON.parse();”方法的優點就不用多說了,推薦此方法。(不明白的盆友可以自己在控制臺測試一下)

二、擴展問題

復制代碼 代碼如下:

var jsonDate = '{ "name":"周星馳","age":23 }'

大家可以看到在上面測試時一直用紅色把包在花括號外面的引號標注了起來,這對引號是很關鍵卻又是常常被忽略的,因為 “eval();” 和 “JSON.parser();” 這兩個方法的參數只接受字符串,也就是說只能解析字符串!!

那我不經會有一個思考,我們在初始化的時候若不加引號對,那么它本身就是對象,js可以直接獲取對象本身的屬性和方法;為什么還要加引號將它變成字符串之后再用 “eval();” 或者 “JSON.parse();” 解析,這樣做不是既不環保又沒有效率嗎?

原因很簡單:前端提供給后臺的只能是字符串數據格式,后臺返回給前臺的就看返回的是什么數據格式,是字符串就必須解析之后再用。

(這個小問題一般大家都會忽略掉,不太關注。我之所以好奇的原因也是因為對后臺了解的不夠,把這個問題拋出來希望對后臺不熟的朋友有所幫助,知道是怎么回事后自然而然會加深記憶,在開發過程中就不會漏掉了)

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级一级一级毛片 | 久久久久久久久久91 | 国产亚洲精品综合一区91555 | 91短视频在线免费观看 | 欧美福利视频一区二区三区 | 精品一区二区三区免费看 | 污片视频在线观看 | a黄在线观看 | 一区二区免费网站 | 国产精品一区网站 | 黄色网址进入 | 操操插插 | 欧美综合日韩 | 国产中文av在线 | 久久亚洲精品国产 | 日韩视频在线一区二区三区 | 日韩视频一区二区三区在线观看 | 圆产精品久久久久久久久久久 | 欧美视频在线一区二区三区 | 精品久久久久久国产 | 亚洲最新色 | 久久久精品视 | 久久久久久久久成人 | 久久国产精品二国产精品 | 国产精品久久久久久久久久尿 | 羞羞答答视频 | 国语自产免费精品视频在 | 亚洲第一页视频 | 精品国产一区二区三 | 污片视频网站 | 在线播放黄色片 | 美女污污视频在线观看 | 成年免费大片黄在线观看岛国 | 久久久资源网 | 日本大片在线播放 | 失禁高潮抽搐喷水h | 斗破苍穹在线观看免费完整观看 | 神马久久精品综合 | 性少妇chinesevideo | 欧美一区二区三区中文字幕 | 日韩在线毛片 |