Eval 不起作用 - JavaScript

Eval doesn't work - JavaScript

本文关键字:JavaScript 不起作用 Eval      更新时间:2023-09-26

我以前从未使用过eval(),所以我认为我只是语法大错特错。以下有什么问题:

var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval(JSONString);
alert(JSONAsObject.item1);

由于它似乎不起作用 - 我加载页面但没有任何反应。

是的,我知道我不应该使用eval。我假设 JSON.parse() 的语法与 eval 的语法相同......右?如果是,如果(在修复代码后)我用 JSON.parse 替换 eval,它还会做同样的事情吗?

使用 eval 时,您需要将 JSON 包装在 () 中:

var JSONAsString = '{"item1":"one", "item2":"two", "item3":"three"}';
var JSONAsObject = eval('(' + JSONAsString + ')');
alert(JSONAsObject.item1);

但是,您应该从一开始就使用JSON.parse(),而不仅仅是以后。否则,可能无效的 JSON 是有效的 JavaScript 可能会工作,但在切换到 JSON.parse 时停止工作。

请注意,使用JSON.*时应包含json2.js,因为某些较旧的浏览器没有本机 JSON 支持。

不要使用 eval() 来解析 JSON。使用 Douglas Crockfords json2,它为您提供跨浏览器支持、性能和安全性:https://github.com/douglascrockford/JSON-js