• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

【精讲】Javascript模板字面量_Zerbrochen的博客_js模板字面量

Data: 2022-04-16 17:25:43Form: JournalClick: 7

【精讲】Javascript模板字面量
(9条消息) 【精讲】Javascript模板字面量_Zerbrochen的博客-CSDN博客_js模板字面量

 

 

模板字面量,是允许嵌入表达式的字符串字面量。

他的语法结构是:`string ${expression} string`

  1. 反引号包括住整个模板字面量。

  2. 表达式要用${}包括。

  3. 要在模板字面量内使用反引号,需要用斜杠转义输出。

  4. 支持输出多行模板字面量

  5. 支持表达式

    var name = '李华';
    var age = 19;
    alert(`${name} 已经 ${age} 岁了 `);

    alert(`这里要输出一个反引号\``);
[object Object]

    alert(`这里要输出一个反引号:\``);


在这里插入图片描述


    alert(`
        hello!
        goodbye!
        nice to meet u!    `);

在这里插入图片描述

输出多行模板字面量时,换行处不需要手动输入\n转义符进行换行,编译器会自动识别字面量中的换行。

这有什么用呢?

当然你需要输入一大段json或者写一段html代码的时候,用多行模板字面量会非常的方便。

    /*输出一段html*/
    //注意:模板字符串内的正常单引号、双引号不需要转义
    const html=`
   <a href="">
        <img src="https://m15.360buyimg.com/mobilecms/jfs/t1/175540/24/19329/6842/60ec0b0aEf35f7384/ec560dbf9b82b90b.png!q70.jpg" alt=""><span>京东超市</span>
   </a>
    `
    document.body.innerHTML=html;


在这里插入图片描述


除了常规变量以外,模板字面量还支持插入表达式。

  var a = 5;
    var b = 10;
    console.log(`十五 是 ${a + b} 而 
    不是 ${2 * a + b}.`);


在这里插入图片描述

模板字面量不仅支持简单运算符,还支持三目运算符

    var a = 5;
    var b= 10;
    alert(`最大的是:${a>b? a:b}`);


在这里插入图片描述

将普通参数传入函数时,我们用圆括号包裹;

将模板字面量传入函数时,我们用反引号包裹。

    function add(){}

    add(1,2);
    add`1,2`


当我们将一个模板字面量传入一个函数,且这个函数有两个以上
参数时,这两个参数会有默认意义。

在这里插入图片描述

第一个参数

第一个参数(非占位符):

是以模板字面量中的${}即表达式为分隔符,分割模板字符串,只取字符串而不取表达式或者参数而构成的数组。

如:

    const template =`你好!${name}!`;

将template传入函数,那么函数的第一个参数就默认是['你好!','!',raw:Array(2)]

可以看见,除了&ldquo;你好!&rdquo;和&ldquo;!&rdquo;还有一个特殊的属性raw,这个raw并不是数组的成员,也就是说,你不能用arr[2]去访问到它。

把raw属性展开:

在这里插入图片描述

可以看到对转义符的处理,raw的属性跟arr1是不一样的。

string会识别转换转义符,而raw会将转义符再次转义成普通字符串,最后输出原样的字符串。

在这里插入图片描述

其他参数

第二个及以后的参数(占位符)

如果函数只有2个参数,而传入的模板字面量有多个占位符(表达式)时,
那么,第二个参数只能对应模板字面量中的第一个占位符(表达式)

    const name = '小明';
    const greet = '你好呀!';

    function show(arr, holder){
        console.log(holder);
    }

    show`${name} 给小红打招呼,说:“${greet}”`;


在这里插入图片描述

如果函数参数继续增加,那么则可以与占位符继续对应。

    const name = '小明';
    const greet = '你好呀!';

    function show(arr, holder1,holder2){
        console.log(holder1);
        console.log(holder1);
    }

    show`${name} 给小红打招呼,说:“${greet}”`;


在这里插入图片描述

可以使用剩余参数。

     const name = '小明';
    const greet = '你好呀!';

    function show(arr, ...holder){
        console.log(holder);
    }

    show`${name} 给小红打招呼,说:“${greet}”`;

在这里插入图片描述

 const name = '小明';
    const greet = '你好呀!';

    const tag=(arr, ...placeholder)=>
        arr.reduce( (pre,cur,index)=>
        pre + placeholder[index-1] +cur );
    
    var res = tag`${name} 给小红打招呼,说:“${greet}”`;
    console.log( res );



在这里插入图片描述

这有什么用?

占位符与非占位符分开输出,可以给他们分别加上css样式,达到强调某些文本的效果:

const name = '小明';
    const greet = '你好呀!';

    const tag=(arr, ...placeholder)=>
        arr.reduce( (pre,cur,index)=>
        pre + `<span style="color:red">${placeholder}</span>` +cur );
    
    var res = tag`${name} 给小红打招呼,说:“${greet}”`;
    console.log( res );
—————————————


在这里插入图片描述

 

 

Name:
<提交>