Javascript eval()无法处理传递的字符串

Javascript eval()无法处理传递的字符串,javascript,eval,Javascript,Eval,我的代码片段: function receive(mag) { var text = eval(mag); alert(text); } receive('["magnolia,", ["Magnolia (Flower)"], [], [], [], [], [], [[3, 19019, "INV_MAG_39 ", 5]]]'); 当我传递示例(如上所示)中的字符串时,eval(mag)不起作用。 但如果我直接这样做: function receive(mag) {

我的代码片段:

function receive(mag)
{
    var text = eval(mag);
    alert(text);
}

receive('["magnolia,", ["Magnolia (Flower)"], [], [], [], [], [], [[3, 19019, "INV_MAG_39 ", 5]]]');
当我传递示例(如上所示)中的字符串时,
eval(mag)
不起作用。 但如果我直接这样做:

function receive(mag)
{
    var text = eval('["magnolia,", ["Magnolia (Flower)"], [], [], [], [], [], [[3, 19019, "INV_MAG_39 ", 5]]]');
    alert(text);
}
它确实有效。
有没有人知道什么地方出了问题/我如何才能让它与传递的变量一起工作?

我认为您缺少了括号:

eval('(' + mag + ')')
但是为什么不使用JSON.parse

var text = JSON.parse(mag);

我想你漏掉了括号:

eval('(' + mag + ')')
但是为什么不使用JSON.parse

var text = JSON.parse(mag);

“行不通”是什么意思?第一个版本到底发生了什么?(控制台中是否有错误?)?第一个版本到底发生了什么?(控制台中是否有错误?),这可能非常危险。您的代码在这里工作:当直接包含字符串而不包含它们时,为什么括号很重要?(即使是“坏”的代码在这里对我来说也很好:-使用Chrome进行了测试。)好吧,我只加入了like代码,因为原始代码太长,无法发布。但你明白我的意思;它在实际代码中所做的是使用ajax获取字符串并将其传递给函数。@nnnnnn:是的,您也是对的。无论如何,正确的语法是eval(“(“+mag+”)”)什么不起作用?你犯了什么错误?语法是正确的,因此如果您没有得到想要的结果,问题就出在别处。@xtra:检查web浏览器的控制台日志。它将给出传递给
receive
函数的确切字符串的确切错误原因。示例中的字符串确实有效,因此错误可能发生在不同的字符串上。当直接包含字符串而不使用括号时,为什么括号很重要?(即使是“坏”的代码在这里对我来说也很好:-使用Chrome进行了测试。)好吧,我只加入了like代码,因为原始代码太长,无法发布。但你明白我的意思;它在实际代码中所做的是使用ajax获取字符串并将其传递给函数。@nnnnnn:是的,您也是对的。无论如何,正确的语法是eval(“(“+mag+”)”)什么不起作用?你犯了什么错误?语法是正确的,因此如果您没有得到想要的结果,问题就出在别处。@xtra:检查web浏览器的控制台日志。它将给出传递给
receive
函数的确切字符串的确切错误原因。示例中的字符串确实有效,因此错误可能发生在其他字符串上。