当前位置: 首页 > 面试题库 >

推迟执行ES6模板文字

陆阳曜
2023-03-14
问题内容

我正在使用新的ES6模板文字功能,想到的第一件事是String.formatJavaScript,因此我着手实现了一个原型:

String.prototype.format = function() {
  var self = this;
  arguments.forEach(function(val,idx) {
    self["p"+idx] = val;
  });
  return this.toString();
};
console.log(`Hello, ${p0}. This is a ${p1}`.format("world", "test"));

但是,在将模板文字传递给我的原型方法之前,需要先对其进行评估。有什么html" target="_blank">方法可以编写上述代码以将结果推迟到动态创建元素之后?


问题答案:

我可以看到三种解决方法:

  • 使用模板字符串,就像设计使用的那样,没有任何format功能:
    console.log(`Hello, ${"world"}. This is a ${"test"}`);
    

    // might make more sense with variables:
    var p0 = “world”, p1 = “test”;
    console.log(Hello, ${p0}. This is a ${p1});

甚至实际推迟评估的 功能参数

    const welcome = (p0, p1) => `Hello, ${p0}. This is a ${p1}`;
console.log(welcome("world", "test"));
  • 不要使用模板字符串,而应使用纯字符串文字:

    String.prototype.format = function() {
    var args = arguments;
    return this.replace(/\$\{p(\d)\}/g, function(match, id) {
        return args[id];
    });
    

    };
    console.log(“Hello, ${p0}. This is a ${p1}”.format(“world”, “test”));

  • 使用带标签的模板文字。请注意,替换仍将在不被处理程序拦截的情况下进行求值,因此您不能像p0没有变量so 那样使用标识符。 如果接受了不同的 替换主体语法 建议,则此行为可能会更改(更新:否)。

function formatter(literals, ...substitutions) {
return {
    format: function() {
        var out = [];
        for(var i=0, k=0; i < literals.length; i++) {
            out[k++] = literals[i];
            out[k++] = arguments[substitutions[i]];
        }
        out[k] = literals[i];
        return out.join("");
    }
};
}
console.log(formatter`Hello, ${0}. This is a ${1}`.format("world", "test"));
// Notice the number literals: ^     
          ^


 类似资料:
  • 我正在玩新的ES6模板文字功能,我首先想到的是一个<code>字符串。为JavaScript格式化,所以我开始实现一个原型: ES6Fiddle 但是,模板文字在传递给我的原型方法之前会被评估。有没有什么方法可以编写上面的代码来将结果推迟到我动态创建元素之后?

  • 主要内容:1.多行字符串,2.字符串插值,3.标记模板,4.原始字符串,5.String.fromCodePoint()模板文字是ECMAScript 2015/ES6中引入的新功能。它提供了创建多行字符串和执行字符串插值的简便方法。模板文字是字符串文字,并允许嵌入表达式。 在ES6之前,模板文字被称为模板字符串。 与字符串中的引号不同,模板文字用反引号()字符(QWERTY键盘中ESC键下方的键)括起来。 模板文字可以包含占位符,由美元符号和大括号表示。在反引号内,如果要使用表达式,则可以将该

  • ES6引入了一种通过反引号( ` )标记的新的字符串文字类型。 这些字符串文字可以包括换行符,并且有一个新的机制用于将变量插入字符串:

  • 问题内容: 我想尝试使用模板文字,但它不起作用:它显示文字变量名称,而不是值。我正在使用Chromev50.0.2(和jQuery)。 例: 输出: 问题答案: JavaScript 模板文字 需要反引号,而不是直接引号。 您需要使用反引号(也称为“重音符”-您会在1键旁边找到)-而不是单引号-来创建模板文字。 反引号在许多编程语言中都很常见,但可能对JavaScript开发人员来说是新的。 范例

  • 问题内容: 我正在尝试编写一些代码,以读取一个SQL文件(用分隔的多个语句)并执行所有语句。 在纯JDBC中,我可以这样写: 并且这两个(所有)语句都已执行。当我尝试在Spring JdbcTemplate中执行相同的操作时,虽然仅执行第一条语句! 有没有一种方法可以执行多个语句?在进行谷歌搜索时,我发现只有“ 手动拆分sqlQuery”之类的解决方案当然是没有用的(它需要更多的解析)。 问题答案

  • 我试图编写一些代码来读取一个SQL文件(多个语句由分隔)并执行所有语句。 有没有执行多个语句的方法?在Googleing中,我只找到了“通过手动拆分sqlQuery”这样的解决方案,这当然是无用的(这需要更多的解析)。