Blogger Information
Blog 28
fans 0
comment 0
visits 30194
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
模板字面量和标签函数细说
G
Original
2805 people have browsed it

模版字面量和标签函数

  1. 模版字面量

    ES6 所提出的模板字面量不是单纯指用来给变量赋值的值,也不单单只是指字符串体系,而是可以达到 HTML 转义、格式化输出、多行字符串等功能的字符串的新模式。
    语法:使用反引号 ` 包裹

  • 格式化输出

    严格注意空格的使用,和缩进的控制,因为这些都会保留在原格式中,ES6 会按照用户给定的格式来输出。

  1. // 实现格式化输出
  2. let username = `第一行
  3. 第二行
  4. 第三行`;
  5. console.log(username);

  • 字符串的拼接+嵌入变量。

    模板字面量之中,变量或表达式叫做“插值”,变量和表达式都必须返回一个值

变量使用\$开头,{}包裹,视为字符串,字符串则正常书写即可。
变量/表达式:${变量名} /${变量*变量}= 视为一个字符串

  1. // 在字符串中嵌入变量不可能,只能拼装
  2. let num = 10,
  3. price = 30;
  4. str = "商品数量: " + num + " 单价: " + price + " 总计: " + num * price;
  5. console.log(str);
  1. // 模板字面量之中,变量或表达式叫做“插值”,变量和表达式都必须返回一个值
  2. let price = 30,
  3. num = 50;
  4. str = `单价:${price} ,总共有多少${num}件,总计:${price * num};`;
  5. console.log(str);

标签函数

用来自定义模板字面量中的插值的行为
插值:模板字面量之中的变量或者表达式。
语法:function 函数名(模板字面量中的原始字符串数值 插值 1 插值 2…)
PS:1.第一个参数必须是模板字面中的原始字符串的内容组成的数组
PS: 2.从第二个开始,与模板字面量中的插值一一对应

标签函数图示解释:

  1. <script>
  2. let num = 10,
  3. price = 30,
  4. total = 25;
  5. // str = `商品单价是:${price} 商品数量是:${num} 商品总数是:${total}`;
  6. // console.log(str);
  7. function show(literals, var1, var2, var3) {
  8. console.log(literals);
  9. console.log(var1, var2, var3);
  10. let str = `<li>${literals[0]}${var1}个</li>
  11. <li>${literals[1]}${var2}元</li><h2>${literals}${var3 * var2}个</h2>`;
  12. return show;
  13. }
  14. // 标签函数之中var1等的值在此定义,引用的模板字面量是下面 `` 包裹的东西
  15. let result = show`商品数量: ${num} 单价: ${price} 总计: ${num * price}`;
  16. console.log(result);
  17. </script>

解构赋值

解构赋值语法是一种 Javascript 表达式。通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。

  1. 对象解构

    对象解构就是讲一个对象里面的属性/值/方法等从对象/数组之中取出,然后赋值给其他变量。

  1. const user = {
  2. name: "admin",
  3. age: 30,
  4. };
  5. // 将从对象user中取出的name和age属性和值赋值给新变量name和age
  6. ({ name, age } = user);
  7. console.log(name, age);//打印新变量
  8. console.log(user)//新对象

不完全解构,左侧的变量比对象 user 中的值多,左侧就会多出来一个没有值得新变量。实际上这个新的变量是没有值赋值给它的,于是这个新的变量的值 = underfined。 这时我们也可以给这个多出来的变量一个默认值。

  1. const user = {
  2. name: "admin",
  3. age: 30,
  4. };
  5. // 多出来的新变量 实际上新变量是没有值可以赋值给它的。
  6. ({ name, age, sex } = user);
  7. console.log(name, age, sex);

给定默认值

给定默认值之后,没有得到赋值的新变量就会有一个值,而不是是等于underfined

  1. const user = {
  2. name: "admin",
  3. age: 30,
  4. };
  5. // 多出来的新变量 实际上新变量是没有值可以赋值给它的。
  6. ({ name, age, sex = "male" } = user);
  7. console.log(name, age, sex);

新变量的别名:

语法:变量名:新变量名 = "值"
但是后续的时候引用的时候就要使用新的变量名,不能引用原变量名,否则会出错。

  1. const user = {
  2. name: "admin",
  3. age: 30,
  4. };
  5. // sex的别名gender
  6. ({ name, age, sex:gender = "male" } = user);
  7. // 这里就不能使用sex来输出了
  8. //console.log(name, age, sex);
  9. console.log(name,age,gender)

可以达到一样的效果

  1. 数组解构
  1. const score = [66, 77, 88, 99];
  2. let [html, css, js, php] = score;
  3. console.log(html, css, js, php);
  4. let [a, [b], c] = [1, [2], 3];
  5. console.log(a, b, c);

  • 不完全解构
  1. // 变量比值少 使用`...`表示接纳剩下的所有值
  2. let [a, ...b] = [11, 22, 33];
  3. console.log(a, b);
  4. // 变量比值多,最后的值会获得一个`underfined`的值
  5. let [a1, b1, c1, d1 = "44"] = [11, 22, 33];
  6. console.log(a1, b1, c1, d1);
  7. // 给定默认值
  8. let [a2, b2, c2, d2 = 44] = [11, 22, 33];
  9. console.log(a2, b2, c2, d2 );

不完全解构

给定默认值之后

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:解构很好用, 但不少开发者仍不习惯, 希望以后在合适场景 下, 尽可能用它
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post