我在我的网络应用程序中使用jquery。我们使用下面的eval方法。
var json = eval('(' + data + ')');
谷歌搜索后我发现上面使用的eval方法将json数据转换为javascript对象。但这种语法意味着什么?为什么它必须括在('('')')括号内。请帮助我理解。
答案 0 :(得分:2)
不要使用eval
来解析json。由于您正在使用jQuery,请使用$.parseJSON(data)
。如果数据包含window.close()
?
WRT到括号,您可以在douglas crockford's json2.js中看到解释它们的评论:
// In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity // in JavaScript: it can begin a block or an object literal. We wrap the text // in parens to eliminate the ambiguity.
答案 1 :(得分:2)
使用()
括起数据是为了防止将{}
解析为块。
var json = eval('{}'); // the result is undefined
var json = eval('({})'); // the result is the empty object.
var json = eval('{"a": 1}'); // syntax error
var json = eval('({"a": 1})'); // the result is object: {a: 1}
但不应使用 eval
来解析json数据。
使用var json = JSON.parse(data);
或某些库函数。