zoukankan      html  css  js  c++  java
  • 深入理解ES6读书笔记2:模板字面量

    模板字面量提供了创建领域专用语言(domain-specific language,DSL)的语法,处理内容更安全。
    模板字面量的最简单语法,是使用反引号( ` )来包裹普通字符串。
    字符串中包含反引号,使用反斜杠( )转义。

    let message = `Hello world!`;
    console.log(message); // "Hello world!"
    console.log(typeof message); // "string"
    console.log(message.length); // 12
    let message2 = `\`Hello world!\``; 
    console.log(message2); // "`Hello world!`"

    多行字符串

    let message = `Hello 
      world!`;
    console.log(message);

    制造替换位

    替换位可以将任何有效的 JS 表达式嵌入到模板字面量中,并将其结果输出为字符串的一部分。
    替换位由起始的 ${ 与结束的 } 来界定,之间允许放入任意的 JS 表达式。
    可替换的除了变量名,还可以嵌入计算、函数调用等等。

    let count = 10,
        price = 0.25,
        message = `${count} items cost $${(count * price).toFixed(2)}.`;
    console.log(message); // "10 items cost $2.50."

    标签化模板

    一个模板标签能对模板字面量进行转换并返回最终的字符串值,标签在模板的起始处被指定,即在第一个 ` 之前,如下所示:

    let message = tag`Hello world`;

    tag 就是会被应用到 `Hello world` 模板字面量上的模板标签。
    第一个参数是个数组,包含被 JS 解释过的字面量字符串,随后的参数是每个替换位的解释值。

    let name = 'World'; 
    let message = tag`Hello ${name} !`;
    function tag(literals, ...substitutions) {
        let result1 = "";
        let result2 = "";
        for (let i = 0; i < literals.length; i++) {
            console.log('literals[', i, ']:', literals[i]);//literals[ 0 ]: Hello 
                                                           //literals[ 1 ]:  !
            result1 += literals[i];
        }
        for (let i = 0; i < substitutions.length; i++) {        
            console.log('substitutions[', i, ']:', substitutions[i]);//substitutions[ 0 ]: World
            result2 += substitutions[i];
        }
        return result2 + result1; // "WorldHello  !"    
    }
    console.log(message);

    模板字面量中的原始值

    模板标签也能访问字符串的原始信息,主要指的是可以访问字符在转义之前的形式。

    let message1 = `Hello
    world!`,
        message2 = String.raw`Hello
    world!`;
    console.log(message1);//"Hello
                          // world!"
    console.log(message2);//"Hello
    world!"
  • 相关阅读:
    ECSHOP订单隐藏前几位字符用星号*代替
    ECshop将团购说明改成FCKeditor编辑器
    ECSHOP默认编辑器换成实用的KindEditor编辑器
    织梦DEDECMS导航下拉菜单的实现方法
    CSS中右对齐float:right换行的解决方法
    ecshop后台我的收藏显示收藏的商品图片和时间的方法
    ECSHOP程序SEO完全优化
    ECSHOP商品详情页颜色、尺码 选择仿淘宝效果
    ecshop 前台 “非特殊等级”在那修改?
    ECSHOP登录注册信息提示页面的跳转时间设置
  • 原文地址:https://www.cnblogs.com/gdjlc/p/14516412.html
Copyright © 2011-2022 走看看