2013-03-15 30 views
0

我不能得到这个编译:导出函数内返回一个新的立即excecuted功能

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 }; 
     } 
    } 

它既有(“回归”声明说)下一个标记错误或}预期

回答

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到立即执行功能,并增加了return只是这样我就可以测试结果。

+0

很酷的解决方案! – FutuToad 2013-03-18 09:17:25

0

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