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,或者,你可以阅读以下内容: