博主信息
博文 48
粉丝 0
评论 0
访问量 45777
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
解构和模板标签(0902)
丶久而旧之丶
原创
917人浏览过

解构和模板标签

数组解构

  1. let fruits = ["苹果", "香梨", "猕猴桃", "香蕉", "火龙果", "西瓜"];
  2. // 把某一个元素之后的所有元素放入另一个数组中
  3. // 传统方法
  4. let arr = fruits.slice(2);
  5. console.log(arr);
  6. // 用数组解构中不定参数解决
  7. let [firstfruit, secondfruit, ...rest] = fruits;
  8. console.log(firstfruit, secondfruit, rest);
  9. console.log(...rest);
  10. // 数组合并
  11. let tmp1 = [1, 2, 3];
  12. let tmp2 = [4, 5, 6];
  13. let tmp3 = [7, 8, 9];
  14. let res = tmp1.concat(tmp2, tmp3);
  15. console.log(res);
  16. // concat方法支持自己再加上自己合并
  17. // js中数组都是引用传递,没有数组克隆,改变其中一个数组的值那么另一个数组的也改变了
  18. let n = tmp1;
  19. n[0] = 10;
  20. tmp1[2] = 15;
  21. console.log(tmp1);
  22. console.log(n);
  23. // 数组克隆
  24. let [...newa] = tmp1;
  25. // newa是一个新数组,不再和tmp1有关联,
  26. newa[0] = 30;
  27. console.log(tmp1);

函数中的解构参数

  1. // 函数中的解构参数
  2. let setUser = function (id, userInfo) {
  3. userInfo = userInfo || {};
  4. let name = userInfo.name;
  5. let email = userInfo.email;
  6. let age = userInfo.age;
  7. return { id, email, name, age };
  8. };
  9. let user = new setUser(1);
  10. console.log(user);
  11. user = new setUser(1, { name: "admin", email: "admin@qq.com", age: 20 });
  12. console.log(user);
  13. // 用解构参数简化
  14. // 如果对象参数不写入默认值那么调用时必须传入相应参数不然会报错所以可以参数传入空对象
  15. // 也可以写入默认值
  16. const userinfo = {
  17. name: "admin",
  18. email: "admin@qq.com",
  19. age: 18,
  20. };
  21. setUser = function (id, { name, email, age } = userinfo) {
  22. return { id, name, email, age };
  23. };
  24. user = new setUser(1);
  25. console.log(user);
  26. // 变量交换
  27. let a = 10, b = 20;
  28. console.log("x=%d,y=%d", a, b);
  29. [a, b] = [b, a];
  30. console.log("x=%d,y=%d", a, b);

模板字面量

  1. // 传统多行字符串
  2. let str = "我是第一行,\n \
  3. 我是第二行,\n \
  4. 我是第三行";
  5. // 也可以写入数组中使用函数
  6. let str1 = [
  7. "我是第一行,",
  8. "我是第二行,",
  9. "我是第三行。",
  10. ].join("\n");
  11. console.log(str);
  12. // 如果是\n那么需要渲染到页面中时就不会换行,所以根据需要书写br或者\n
  13. console.log(str1);
  14. // 传统变量嵌入
  15. let list = ["苹果", "香梨"];
  16. console.log("我喜欢吃" + list);
  17. // 模板字面量书写多行字符串
  18. // 如果书写多行字符串时一般第一行不书写,后面添加trim()方法消除空格
  19. let str2 = `
  20. 我是第一行,
  21. 我是第二行,
  22. 我是第三行`.trim();
  23. console.log(str2);
  24. // 模板字面量的变量嵌入
  25. let name = "小明";
  26. console.log(`大家好呀 我叫${name},很高兴认识你们`);
  27. // 也支持函数
  28. function func(name) {
  29. return name;
  30. }
  31. console.log(`hello 我叫${func("小明")}`);
  32. // 也可以嵌套
  33. let age = 20;
  34. console.log(`hello 我叫${`${func("小明")}年龄是${age}`}`);

模板标签

  1. // 模板标签
  2. function func(name, ...email) {
  3. console.log("my name is ", name);
  4. console.log("my email is", email);
  5. }
  6. let name = "admin";
  7. let email = "admin@qq.com";
  8. func(name, email);
  9. func`${name},${email}`;
  10. let width = 27;
  11. let height = 56;
  12. let area = getarea`高为 ${height} *宽为 ${width} = 面积 ${width * height}`;
  13. function getarea(str, ...val) {
  14. let res = "";
  15. for (let i = 0; i < val.length; i++) {
  16. res += str[i];
  17. res += val[i];
  18. }
  19. res += str[str.length - 1];
  20. return res;
  21. }
  22. console.log(area);
  23. // 模板字面量获取原始值
  24. function func1(str, ...val) {
  25. let res = "";
  26. for (let i = 0; i < val.length; i++) {
  27. res += str.raw[i];
  28. res += val[i];
  29. }
  30. res += str.raw[str.raw.length - 1];
  31. return res;
  32. }
  33. let a = func1`my name is ${name} \n my email is ${email}`;
  34. console.log(a);

总结

1.虽然百度了对于用new调用函数和不用new调用函数有什么区别,但还是没有理解。
2.模板标签函数的作用是最后返回的是一个字符串是吗?其应用场景还不了解,这节课听的有点懵。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:相同的函数, 调用方式不同, 返回结果不同...如同面粉, 可以做成面包,也可以做也面条, 只是加工方式不同....
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学