我在我的 Web 应用程序中使用 jquery。在那里我们使用下面的 eval 方法。
var json = eval('(' + data + ')');
谷歌搜索后,我发现上面使用的 eval 方法将 json 数据转换为 javascript 对象。但是这种语法是什么意思?为什么它必须包含在 ('(' ')') 括号内。请帮助我理解。
我在我的 Web 应用程序中使用 jquery。在那里我们使用下面的 eval 方法。
var json = eval('(' + data + ')');
谷歌搜索后,我发现上面使用的 eval 方法将 json 数据转换为 javascript 对象。但是这种语法是什么意思?为什么它必须包含在 ('(' ')') 括号内。请帮助我理解。
不要eval
用来解析 json。由于您使用的是 jQuery,因此请使用$.parseJSON(data)
. 如果包含数据window.close()
怎么办?
WRT 到括号中,您可以在douglas crockford 的 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.
用于()
封装数据是为了防止{}
被解析为块。
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);
或一些库函数。