Javascript 如何从函数返回字符串形式的数组?

Javascript 如何从函数返回字符串形式的数组?,javascript,google-apps-script,Javascript,Google Apps Script,我想设置一个函数来返回全局变量和对象,然后在调用函数中对它们使用eval,但我正在努力解决如何做到这一点 我意识到我需要将它们作为字符串返回,并尝试了一些方法。现在: //global vars etc for functions function globals(name){ let returnVal; switch (name){ case "scEmailFindReplace": returnVal = [ [

我想设置一个函数来返回全局变量和对象,然后在调用函数中对它们使用
eval
,但我正在努力解决如何做到这一点

我意识到我需要将它们作为字符串返回,并尝试了一些方法。现在:

//global vars etc for functions
function globals(name){
  
  let returnVal;
  
  switch (name){
    case "scEmailFindReplace":
      returnVal = [
        ["MULTI_LINE_ADDRESS_NAME", contact.sendName],
        ["MULTI_LINE_ADDRESS_FLAT", "Flat "+contact.flatNum+" Glenmore"],
        ["INV_NO", invNum],
        ["INV_DATE", scVars.INV__DATE],
        ["DEM_DATE", scVars.DEM__DATE],
        ["INV_START", scVars.INV_START],
        ["INV_END", scVars.INV_END],
        ["PAY_REF", "Glen "+contact.flatNum],
        ["SC_NET", scVars.DEM_AMOUNT],
        ["SC_GROSS", scVars.DEM_AMOUNT],
        ["TOT_NET", scVars.DEM_AMOUNT],
        ["TOT_GROSS", scVars.DEM_AMOUNT]
      ].toString();
      break;
    default:
      returnVal = "NOT FOUND";
      break;
  }
  
  return returnVal
}
但是没有运气。仍然会在返回之前尝试对其求值。

您可以使用获取字符串,该字符串可以在以后进行求值

const contact={},
scVars={},
invNum=“”;
//函数的全局变量等
函数全局变量(名称){
让我们回到过去;
交换机(名称){
案例“scEmailFindReplace”:
returnVal=JSON.stringify([
[“多行地址”,contact.sendName],
[“多行地址”扁平“,“扁平”+contact.flatNum+“Glenmore”],
[“库存编号”,库存编号],
[“库存日期”,scVars.库存日期],
[“DEM_日期”,scVars.DEM_日期],
[“库存启动”,scVars.INV\U START],
[“库存结束”,scVars.INV结束],
[“支付参考”、“格伦”+联系人:flatNum],
[“SC_净额”,scVars.DEM_金额],
[“SC_总额”,scVars.DEM_金额],
[“总净值”,scVars.DEM\U金额],
[“总金额”,scVars.DEM\U金额]
]);
打破
违约:
returnVal=“未找到”;
打破
}
返回值
}

console.log(globals(“scEmailFindReplace”)立即,评估是个坏主意。无论你想做什么,退一步想想为什么需要这样做。也许有更好的办法(我肯定有)嗯。我想你可能是对的。我要搔头了。为什么出于兴趣而如此反
eval
?Cheers@ChrisBarrett-因为
eval
是不可信输入的巨大安全风险。而且这是对受信任输入的性能打击。因为我们有更好的选择,比如
JSON
内置对象。因为全局变量通常是个坏主意(“为什么”本身就可以成为一本书的章节)。现在,你为什么要做你所要求的事?@ChrisBarrett,或者,你可以阅读以下内容: