博客列表 >模板字面量和标签函数细说

模板字面量和标签函数细说

G
G原创
2020年11月04日 15:48:522804浏览

模版字面量和标签函数

  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 );

不完全解构

给定默认值之后

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议