js字符串轉(zhuǎn)換為對象格式的三種方法總結(jié)
背景:
js字符串轉(zhuǎn)換為對象格式,一般都會想到JSON.parse(),但數(shù)據(jù)不是標準的 JSON 格式的時候會解析出錯,這時候就可以使用eval() 函數(shù)、new Function()方法來轉(zhuǎn)換。
常用3種將字符串string轉(zhuǎn)為json對象 方法:
var str = '{"name":"小明","age":18}';
var json = JSON.parse(str);//第一種
var json2 = eval("(" + str + ")");//第二種
var json3 = (new Function("return " + str))();//第三種打印效果:

詳細說明:
JSON.parse()
語法:
JSON.parse(text[, reviver]); //text:必需, 一個有效的 JSON 字符串。 //reviver: 可選,一個轉(zhuǎn)換結(jié)果的函數(shù), 將為對象的每個成員調(diào)用此函數(shù)。
解析前要確保你的數(shù)據(jù)是標準的 JSON 格式,否則會解析出錯。
情況一:有的人可能會習慣寫成對象形式的字符串,如:str = '{name:"小明",age:18}'; 結(jié)果使用JSON.parse()來轉(zhuǎn)化會報錯,因為使用JSON.parse需嚴格遵守JSON規(guī)范。
情況二:JSON.parse使用單引號來套雙引號,如果反過來寫呢,如:var str = "{'name':'小明', 'age':18}";(相信也不少人習慣用雙引號套單引號) 結(jié)果使用JSON.parse()來轉(zhuǎn)化也會報錯

eval() 函數(shù)
定義和用法:
eval() 函數(shù)計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。
如果參數(shù)是一個表達式,eval() 函數(shù)將執(zhí)行表達式。如果參數(shù)是Javascript語句,eval()將執(zhí)行 Javascript 語句。
語法:
eval(string)
參數(shù)描述string必需。要計算的字符串,其中含有要計算的 JavaScript 表達式或要執(zhí)行的語句。
eval()的返回值
eval()的返回值遵循以下規(guī)則:
1.如果eval()的參數(shù)不是字符串,那么eval()將直接返回參數(shù)。
2.如果eval()的參數(shù)是字符串,那么eval()將這個字符串解析成代碼后進行執(zhí)行,并返回最后一行代碼執(zhí)行的結(jié)果。
3.如果字符串無法解析成合法的代碼,eval()將拋出SyntaxError錯誤
new Function()
這個特殊的new Function表面看起來很奇怪,但在實踐中顯得非常有用。
語法:
let func = new Function(arg1, arg2, ..., body);
歷史原因,參數(shù)也可以以逗號分隔的列表的形式給出。
這三個意思相同:
new Function('a', 'b', 'return a + b'); // 基礎(chǔ)語法
new Function('a,b', 'return a + b'); // 逗號分隔
new Function('a , b', 'return a + b'); // 逗號加空格分隔使用new Function創(chuàng)建的函數(shù),其[[Environment]]引用全局詞法環(huán)境,而不是包含該函數(shù)的外部詞法環(huán)境。因此,他們不能使用外層的變量。但這確實很好,因為它可以使我們免于錯誤。明確地傳遞參數(shù)在架構(gòu)上是一種更好的方法,并且不會在使用minifiers時不會產(chǎn)生問題。
總結(jié)
到此這篇關(guān)于js字符串轉(zhuǎn)換為對象格式的三種方法總結(jié)的文章就介紹到這了,更多相關(guān)js字符串轉(zhuǎn)換對象格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決使用layui的時候form表單中的select等不能渲染的問題
今天小編就為大家分享一篇解決使用layui的時候form表單中的select等不能渲染的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
微信小程序開發(fā)之tabbar圖標和顏色的實現(xiàn)
這篇文章主要介紹了微信小程序開發(fā)之tabbar圖標和顏色的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
javascript拖曳互換div的位置實現(xiàn)示例
一個div拖動互換位置的demo,還有很大優(yōu)化的空間,利用dom元素的dragstart/ondragover/ondrop事件完成,感興趣的可以了解一下2021-06-06

