ES6 模板字符串

发布于 2022-02-01 23:08:21 字数 1842 浏览 865 评论 0

在 ES6 引入模板字符串之前,如果大家需要在代码中创建一个包含变量的字符串,那么代码将非常难读,并且也非常容易出错。下面就是一个简单的例子,在例子中我们将输入的 3 个参数拼接在一起,然后返回给调用方。

//在模板字符串出现前的写法,写法冗长而且难于理解
function returnSomthing(param1, param2, param3){
    return "something return based on input("
           + "param1:" + param1.toString() + "---"
           + "param2:" + param2.toString() + "---"
           + "param3:" + param3.toString();
}

//使用模板字符串的写法,
function returnSomthingNew(param1, param2, param3){
    return `something return based on input(
              param1:${param1}---param2:${param2}---param3:${param3}`;
}

通过上面的代码,你可以看出在使用模板字符串之后,代码变得非常简洁,而且也容易阅读。下面是在使用模板字符串时候的一些注意点

  • 模板字符串是使用 ` 引用起来的,如果在最终生成的字符串中包含`字符,那么需要使用 \ 字符进行转义
  • 模板字符串中对于变量的引用是通过 ${} 来进行的
  • 使用模板字符串的时候,${} 中可以放入任意合法的JavaScript表达式。JavaScript 对包含在 ${} 中的内容实际上是通过 eval 表达式来进行的

标签模板

模板字符串可以跟在一个函数名之后,该函数将被调用来处理跟在后面的模板字符串,这个功能被称为标签模板。被调用的函数将接收到下面的参数列表(literals,...values)。其中 literals 是一个数组,内容是模板字符串中不需要进行变量替换的部分,而 values 就是每个替换变量经过 eval 之后的值,下面是一个具体的例子。

var total = 30;
var msg = transform`The total number is ${total}`;
total = 20;
var msg1 = transform`The total number is ${total}`;
//in our sample
//literals = ["The total number is ", ""]
//values = [30]
function transform(literals,...values){
    var output = "";
    for (var index = 0; index < values.length; index++){
        if (parseInt(values[index]) >= 30){
            output += literals[index] + "high value";
        }else{
            output += literals[index] + "low value";
        }
    }
    output += literals[index];
    return output;
}
console.log(msg); //output The total number is high value
console.log(msg1);//output The total number is low value

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

游缘惊梦

文章 0 评论 0

小兔几

文章 0 评论 0

Glik

文章 0 评论 0

生生漫

文章 0 评论 0

Luxian

文章 0 评论 0

Champion-Ming

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文