0

我无法编译:

  export function Parse(jsonData) {
        try {
            if (jsonData.d != undefined) {
                if (jsonData.d != "") {
                    return (new function("return " + jsonData.d))();
                }
            }
            else {
                if (jsonData != "") {
                    return (new  function("return " + jsonData))();
                }
            }
            return {};
        }
        catch (e) {
            return { exception: e.Message };
        }
    }

它在(“return”语句说)或 }下都标记了一个错误

4

2 回答 2

2

总的来说,在 JavaScript 中最好避免使用new关键字。您可以在没有它的情况下创建立即执行的匿名函数,如下所示:

function Parse(jsonData) {
    try {
        if (typeof jsonData.d !== 'undefined') {
            if (jsonData.d != "") {
                    return (function(j) { 
                        return "return " + j.d;
                    }(jsonData));
                }
            } else {
                if (jsonData != "") {
                    return (function(j) { 
                        return "return " + j;
                    }(jsonData));
                }
            }
            return {};
        }
        catch (e) {
            return { exception: e.Message };
        }
}

var data = { d: 'x' }; // 'test';
var result = Parse(data);
alert(result);

在此示例中,我删除了new关键字,将 jsonData 传递给立即执行的函数并添加了一个returnjust 以便我可以测试结果。

于 2013-03-16T09:43:43.180 回答
0

你想要new Function,不是new function,在这两个地方(与 JavaScript 相同)。

于 2013-03-15T18:10:06.463 回答