javascript - 是否可以在 Javascript 中构造一个内置“变量”的字符串?
问题描述
我正在使用一些脚本编写 PDF,并且我正在使用控制台和一些简单的循环将代码应用于字段以节省重复工作。在某些情况下,我将自定义计算脚本应用于需要将一个整数从一个字段更改为下一个字段的字段。如果所有脚本都相同,我将在调试器控制台中运行它:
var s = "if(this.getField(\"Span A\").value >= 60){\n\
event.value = Math.round(((this.getField(\"Span A\").value*41500 - 1674500)/233));\n\
}else{\n\
event.value = Math.round((this.getField(\"Span A\").value*3500/60));\n\
}";
for (var i = 0; i < this.numFields; i++){
var f = this.getField(getNthFieldName(i));
if(f.name.match(/quant a/i) != null){
var n = f.name.match(/\d/g);
f.setAction("Calculate", s);
}
}
我有很多“量化”字段,每个组(A、B 等)都会有类似的计算。字段名称为“Quant A1”、“Quant A2”等。Quant A1 需要使用 Span A1 的输入进行计算。
在上面的脚本中,如果我可以在脚本字符串中有一个变量,我可以将一个值 (n) 插入到字符串中,那将非常酷,基本上与函数调用的工作方式相同。
这可能吗?
这是我想象中的幻想版本(这只是为了进一步解释我的意图;我认为这实际上不会这样工作):
var s(x) = "if(this.getField(\"Span A\""x").value >= 60){\n\
event.value = Math.round(((this.getField(\"Span A\""x").value*41500 - 1674500)/233));\n\
}else{\n\
event.value = Math.round((this.getField(\"Span A\""x").value*3500/60));\n\
}";
for (var i = 0; i < this.numFields; i++){
var f = this.getField(getNthFieldName(i));
if(f.name.match(/quant a/i) != null){
var n = f.name.match(/\d/g);
f.setAction("Calculate", s(n));
}
}
解决方案
如果您使用的是 ES6 及更高版本,则可以使用字符串文字。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals?retiredLocale=nl
const greetings = "I'm a variable!";
let string = `Hi! this is a variable: ${greetings}`;
console.log(string);
否则将其与 + 运算符连接。
推荐阅读
- arrays - 如何在 C 中释放 2D 动态数组
- android - 如何获得华为移动服务(HMS)的CaaS引擎权限?
- c# - 如何在 WPF 中的删除操作之前启用文本框并等待输入条件
- vi - i3wm中箭头键的绑定模式
- asp.net-core - 不记名令牌未包含在 SwaggerUI 中
- linux - Linux 上的 docker-compose `host-gateway` 无法连接到 RPC (v20.10.1)
- python-3.x - 有没有办法将 MCP4725 DAC 与 pymata4 一起使用?
- entity-framework-core - 如何在 Entity Framework Core 中首先将 ConcurrencyCheck 添加到通过数据库生成的实体
- r - 从 r 中的“for”循环中获取输出到矩阵或数据框中
- java - 从孩子保存时,休眠一对多双向连接会提供新的父母