将复杂代码组合为 javascript 中的字符串
Composing complex code as string in javascript
我正在使用自己的 JavaScript 代码设计自定义 Blockly
块,当我尝试输出为字符串的代码是一个单行代码时,这并不复杂,但是当代码我正在尝试关联到我的自定义块,通过连接变量、单引号、双引号来完成它,它开始变得混乱,并生成带有难以排除故障的语法错误的代码。
这是一个简单块的代码,我现在这样做的方式:
this.EnableAllItems = function (block) {
var target_field = block.getField('target_field');
var code = "$('#" + target_field.getText() + " option').removeAttr('disabled');\r\n";
return code;
}
这是我用来在 select
输入中启用所有 options
的块。
适用于简单代码。但我想做的是按字面意思编写 JS 代码,稍后将其转换为字符串。
这样的事情是否可能:
function enableItemsLogic(targetField) {
$('#' + targetField + ' option').removeAttr('disabled');
}
this.EnableAllItems = function (block) {
var target_field = block.getField('target_field');
//somehow return the above function as code with the literal parameter filled in ?
var code = enableItemsLogic(target_field.getText());
return code;
}
是否有任何 JS 技巧可以让我做到这一点?
您可以为此使用模板文字(如果您转译 JavaScript,这是一个 ES5 功能)。
const name = "Francis";
const foo = `Hello my name is: ${name}`;
在此处阅读更多内容:https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Template_literals
我正在使用自己的 JavaScript 代码设计自定义 Blockly
块,当我尝试输出为字符串的代码是一个单行代码时,这并不复杂,但是当代码我正在尝试关联到我的自定义块,通过连接变量、单引号、双引号来完成它,它开始变得混乱,并生成带有难以排除故障的语法错误的代码。
这是一个简单块的代码,我现在这样做的方式:
this.EnableAllItems = function (block) {
var target_field = block.getField('target_field');
var code = "$('#" + target_field.getText() + " option').removeAttr('disabled');\r\n";
return code;
}
这是我用来在 select
输入中启用所有 options
的块。
适用于简单代码。但我想做的是按字面意思编写 JS 代码,稍后将其转换为字符串。
这样的事情是否可能:
function enableItemsLogic(targetField) {
$('#' + targetField + ' option').removeAttr('disabled');
}
this.EnableAllItems = function (block) {
var target_field = block.getField('target_field');
//somehow return the above function as code with the literal parameter filled in ?
var code = enableItemsLogic(target_field.getText());
return code;
}
是否有任何 JS 技巧可以让我做到这一点?
您可以为此使用模板文字(如果您转译 JavaScript,这是一个 ES5 功能)。
const name = "Francis";
const foo = `Hello my name is: ${name}`;
在此处阅读更多内容:https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Template_literals