亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript中eval解析JSON字符串

2019-11-20 10:29:44
字體:
來源:轉載
供稿:網友

我們都知道,高級瀏覽器可以用  JSON.parse() API 將一個 JSON 字符串解析成 JSON 數據,稍微欠妥點的做法,我們可以用 eval() 函數。

var str = '{"name": "hanzichi", "age": 10}';var obj = eval('(' + str + ')');console.log(obj); // Object {name: "hanzichi", age: 10}

是否注意到,向 eval() 傳參時,str 變量外裹了一層小括號?為什么要這樣做?

我們先來看看 eval 函數的定義以及使用。

eval() 的參數是一個字符串。如果字符串表示了一個表達式,eval() 會對表達式求值。如果參數表示了一個或多個 JavaScript 聲明, 那么 eval() 會執行聲明。不要調用 eval() 來為算數表達式求值; JavaScript 會自動為算數表達式求值。

簡單地說,eval 函數的參數是一個字符串,如果把字符串 “noString” 化處理,那么得到的將是正常的可以運行的 JavaScript 語句。

怎么說?舉個栗子,如下代碼:

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

執行后彈出 “hello world”。我們把 str 變量 “noString” 化,粗暴點的做法就是去掉外面的引號,內部調整(轉義等),然后就變成了:

alert('hello world')

very good!這是正常的可以運行的 JavaScript 語句!運行之!

再回到開始的問題,為什么 JSON 字符串要裹上小括號。如果不加,是這個樣子的:

var str = '{"name": "hanzichi", "age": 10}';var obj = eval(str); // Uncaught SyntaxError: Unexpected token :

恩,報錯了。為什么會報錯?試試把 str “noString” 化,執行一下:

{"name": "hanzichi", "age": 10}; // Uncaught SyntaxError: Unexpected token :

毫無疑問,一個 JSON 對象或者說是一個對象根本就不是能執行的 JavaScript 語句!等等,試試以下代碼:

var str = '{name: "hanzichi"}';var obj = eval(str);console.log(obj); // hanzichi

這又是什么鬼?但是給 name 加上 “” 又報錯?

var str = '{"name": "hanzichi"}';var obj = eval(str); // Uncaught SyntaxError: Unexpected token :console.log(obj);

好吧,快暈了,其實還是可以將 str “nostring” 化,看看是不是能正確執行的 JavaScript 語句。前者的結果是:

{name: "hanzichi"}

這確實是一條合法的 JavaScript 語句。{} 我們不僅能在 if、for 語句等場景使用,甚至可以在任何時候,因為 ES6 之前 JavaScript 只有塊級作用域,所以對于作用域什么的并不會有什么沖突。去掉 {} 后 name: "hanzichi"也是合法的語句,一個 label 語句,label 語句在跳出嵌套的循環中非常好用,具體可以參考 label,而作為 label 語句的標記,name 是不能帶引號的,標記能放在 JavaScript 代碼的任何位置,用不到也沒關系。

一旦一個對象有了兩個 key,比如 {name: "hanzichi", age: 10} ,ok,兩個 label 語句?將 “hanzhichi” 以及 10 分別看做是語句,但是 語句之間只能用封號連接?。ū磉_式之間才能用逗號)。所以改成下面這樣也是沒有問題的:

var str = '{name: "hanzichi"; age: 10}';var obj = eval(str); console.log(obj); // 10

越扯越遠,文章開頭代碼的錯誤的原因是找到了,為什么套個括號就能解決呢?簡單來說,() 會把語句轉換成表達式,稱為語句表達式。括號里的代碼都會被轉換為表達式求值并且返回,對象字面量必須作為表達式而存在。

本文并不會大談表達式,值得記住的一點是,表達式永遠有一個返回值。大部分表達式會包裹在() 內,小括號內不能為空,如果有多個表達式,用逗號隔開,也就是所謂的逗號表達式,會返回最后一個的值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品美女视频明星a级| 久久久精品国产| 日韩中文字幕在线播放| 国产精品爱啪在线线免费观看| 26uuu日韩精品一区二区| 亚洲免费视频一区二区| 亚洲精品丝袜日韩| 日韩高清人体午夜| 亚洲自拍偷拍福利| 久久艹在线视频| 久久久久久网站| 国产一区私人高清影院| 午夜精品免费视频| 91精品国产91| 91精品国产乱码久久久久久久久| 中文欧美在线视频| 亲子乱一区二区三区电影| 国产热re99久久6国产精品| 精品香蕉一区二区三区| 国产精品视频网址| 久久精品亚洲国产| 亚洲最新av网址| 日韩欧美国产激情| 精品色蜜蜜精品视频在线观看| 黄网动漫久久久| 色综合色综合网色综合| 成人黄色在线播放| 91午夜在线播放| 国产精品福利在线观看网址| 91精品国产综合久久男男| 国产精品亚洲精品| 国产亚洲一区精品| 欧美人成在线视频| 亚洲美女在线视频| 亚洲国产精品中文| 亚洲福利视频二区| 成人春色激情网| 2019中文字幕全在线观看| 亚洲色在线视频| 国产综合久久久久久| 97在线视频免费| 欧美网站在线观看| 国产一级揄自揄精品视频| 91av在线免费观看| 国产精品成人播放| 中文字幕日韩欧美在线| 性欧美xxxx视频在线观看| 高清欧美性猛交xxxx| 国产综合视频在线观看| 欧美激情xxxx| 亚洲天堂成人在线| 亚洲欧美日韩天堂| 国产中文日韩欧美| 一区二区三区视频观看| 91人人爽人人爽人人精88v| 亚洲精品视频免费| 日韩黄在线观看| 在线一区二区日韩| 97涩涩爰在线观看亚洲| 亚洲欧美日韩综合| 日韩一级裸体免费视频| 国产手机视频精品| 亚洲成av人片在线观看香蕉| 欧美福利视频在线| 国产成人激情小视频| 亚洲人成在线观看| 久久精品成人一区二区三区| 久久久久久网站| 久久躁日日躁aaaaxxxx| 国产手机视频精品| 亚洲精品一二区| 日韩美女免费观看| 日韩中文字幕精品视频| 国产亚洲一区二区精品| 日韩欧美国产黄色| 亚洲免费视频一区二区| 伊人亚洲福利一区二区三区| 欧美二区在线播放| 亚洲精品日韩丝袜精品| 欧美电影第一页| 欧美色图在线视频| 91精品免费看| 国产精品综合久久久| 97久久精品人搡人人玩| 久久综合久久美利坚合众国| 亚洲最大成人网色| 最近2019年好看中文字幕视频| 亚洲精品成a人在线观看| 91中文精品字幕在线视频| 欲色天天网综合久久| 91精品久久久久久久久久久久久| 国产福利视频一区二区| 麻豆乱码国产一区二区三区| 国产一区二区三区直播精品电影| 成人高清视频观看www| 亚洲va电影大全| 欧美午夜性色大片在线观看| 亚洲欧美精品中文字幕在线| 日韩大胆人体377p| 国产精品91在线观看| 亚洲人成伊人成综合网久久久| 不卡av电影院| 成人免费福利视频| 久久久久久久久久久国产| 亚洲欧洲av一区二区| 亚洲人精选亚洲人成在线| 国产91精品久久久久久久| 久久久久久成人精品| 不卡毛片在线看| 欧美国产日韩二区| 日韩在线观看精品| 国产一区二区三区在线视频| 国产精品久久9| 一区二区三区动漫| 国产亚洲视频在线观看| 中文字幕一精品亚洲无线一区| 久久久久久亚洲| 亚洲天堂免费在线| 日韩欧美在线观看| 色在人av网站天堂精品| 久久久久久噜噜噜久久久精品| 国外色69视频在线观看| 久久精品国产免费观看| 午夜精品久久久99热福利| 亚洲国产精品免费| 亚洲a∨日韩av高清在线观看| 中文字幕一区二区三区电影| 欧美成人免费观看| 清纯唯美日韩制服另类| 黄色一区二区三区| 97在线观看视频| 成人网在线视频| 国产男人精品视频| 日韩第一页在线| 亚洲欧美日韩一区在线| 亚洲成人黄色在线观看| 国产精品精品一区二区三区午夜版| 国产亚洲精品一区二区| 国产精品h片在线播放| 国产网站欧美日韩免费精品在线观看| 亚洲综合大片69999| 国产精品久久久久久中文字| 欧美性xxxxxxxxx| 国产成人精品免高潮在线观看| 亚洲乱亚洲乱妇无码| 国产精品嫩草视频| 亚洲第一男人天堂| 久久精品成人欧美大片| 国产精品扒开腿做| 97香蕉久久超级碰碰高清版| 欧美一区二区大胆人体摄影专业网站| 国产成人在线播放| 日韩在线观看免费高清完整版| 一区二区国产精品视频| 91免费看片网站| 美女性感视频久久久| 色综合色综合久久综合频道88| 国产精品成人品| 国产欧美 在线欧美| 91在线中文字幕| 91免费高清视频| 亚洲欧美日韩天堂| 久久精品国产亚洲精品2020| 色与欲影视天天看综合网|