在前端開發(fā)中,使用 eval 和 json 函數(shù)是非常常見的操作。那么它們的原理究竟是什么呢?下面我們來簡單說一下。
eval 函數(shù)的原理
eval(string)
eval 函數(shù)接收一個字符串參數(shù),這個字符串可以是任意的 JavaScript 表達式。eval 函數(shù)執(zhí)行起來的效果就好像在原本代碼的位置直接寫了這個表達式一樣。我們可以通過下面的代碼來了解一下。
eval("console.log('hello, world!');");
上述代碼的效果與下面這段代碼相同:
console.log("hello, world!");
eval 函數(shù)本身非常強大,但是由于他可以執(zhí)行任意的 JavaScript 代碼,所以在不正確使用時可能會導(dǎo)致一些危險的后果。
JSON 函數(shù)的原理
JSON.parse(text) JSON.stringify(value[, replacer [, space]])
在前端中,我們通常會使用 JSON 函數(shù)來進行換成 JSON 格式的數(shù)據(jù)傳輸。JSON 對象的 parse 方法可以將 JSON 格式的字符串轉(zhuǎn)換成 JavaScript 對象,而 stringify 方法可以將 JavaScript 對象轉(zhuǎn)換成 JSON 格式的字符串。
var jsonStr = '{"name": "Lucas","age": 24}'; var jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name + "年齡是" + jsonObj.age + "歲。"); var jsonObj2 = { "name":"Lucas", "age":24 }; var jsonStr2 = JSON.stringify(jsonObj2); console.log(jsonStr2);
上述代碼演示了如何將一個 JSON 格式的字符串轉(zhuǎn)換成 JavaScript 對象,并如何將一個 JavaScript 對象轉(zhuǎn)換成 JSON 格式的字符串。