Blogger Information
Blog 48
fans 0
comment 0
visits 34354
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
let/const和模板解构(0901)
丶久而旧之丶
Original
818 people have browsed it

let/const模板和解构

let声明

  1. // 1.1var可以重复声明,let不能重复声明
  2. let a;
  3. let a;
  4. // 1.2var会有变量声明提升,let不会,所以也会有可能出现暂时性死区
  5. console.log(username); //出错,因为不会出现变量提升
  6. let username = "小明";
  7. function func() {
  8. let username = "小红";
  9. console.log(username);
  10. }
  11. func();
  12. console.log(username);
  13. // 1.3支持块作用域
  14. if (true) {
  15. let price = 30;
  16. }
  17. // 在外面访问不到price
  18. console.log(price); //出错

const声明

  1. // 2.1常量在一个脚本的声明周期内禁止更新,所以声明的时候必须初始化
  2. const APP_NAME = "管理系统";
  3. // 2.2和let一样不允许重复声明
  4. // 2.3和let一样支持块作用域
  5. // 以后声明变量首选const,如果出现修改数据出现错误时在改为let
  6. // 如果声明对象或者数组时强烈推荐const
  7. const arr = [10, 20, 30];
  8. arr[0] = 50;
  9. arr[1] = 40; //这样更改不会出错
  10. arr[2] = 60;
  11. arr = [10, 40, 70]; 这样才会报错
  12. console.log(arr);
  13. // 更改数组或对象中的属性,值不会报错,只有重新赋值对象或数组会报错
  14. const obj = { x: "admin", y: 123 };
  15. obj.y = 456;
  16. console.log(obj.x, obj.y);

模板解构

  • 解构对象

  1. // 解构的功能--把集合数据按规则打散到独立变量中
  2. const product = {
  3. name: "手机",
  4. price: 4999,
  5. };
  6. // 传统方法
  7. let name1 = product.name;
  8. let price1 = product.price;
  9. console.log("%s: %c %d", name1, "color:lightgreen", price1);
  10. // 模板解构 (等号左边为解构变量声明)--let { name, price }
  11. let { name, price } = product;
  12. console.log("%s: %c %d", name, "color:lightblue", price);
  13. // 没有输入别名的情况下,解构对象时模板解构变量名必须和对象属性名相同
  14. // 解构变量必须初始化,不能只声明(let{a,b};这样是错误的)
  15. // 解构表达式
  16. // 场景1 更新变量数据
  17. let a = 10;
  18. let b = 20;
  19. console.log(a, b);
  20. // 用表达式更新数据
  21. let obj = {
  22. a: 100,
  23. b: 200,
  24. };
  25. ({ a, b } = obj);
  26. console.log(a, b);
  27. // 场景2
  28. function func({ a: x, b: y }) {
  29. console.log(x + y);
  30. }
  31. func(obj);
  32. // 解构声明中设置默认值
  33. const obj1 = {
  34. objName: "admin",
  35. objEmail: "adming@qq.com",
  36. };
  37. const { objName, objEmail = "aaa@qq.com", objAge = 20 } = obj1;
  38. // 有自定义的值则赋自定义值,没有则赋默认值,自定义的值优先级更高
  39. console.log(objName, objEmail, objAge);
  40. // 解构声明中的别名
  41. const obj2 = {
  42. objName: "小明",
  43. objEmail: "xiaoming@qq.com",
  44. };
  45. // 直接解构的话会和上面同名报错所以要用别名
  46. const { objName: objName1, objEmail: objEmail1, objAge: objAge1 = 20 } = obj2;
  47. console.log(objName1, objEmail1, objAge1);
  48. 嵌套对象解构
  49. const obj = {
  50. name: "admin",
  51. course: {
  52. php: {
  53. level: "basis",
  54. grade: 80,
  55. },
  56. javascript: {
  57. level: "advance",
  58. grade: 70,
  59. },
  60. },
  61. };
  62. // 模板解构
  63. const {
  64. course: { php },
  65. } = obj;
  66. console.log(php);
  67. // 嵌套对象的多次解构
  68. const {
  69. name,
  70. course,
  71. course: { php: objphp },
  72. course: { php: { level } },
  73. } = obj;
  74. console.log(name, course, objphp, level);

对象的嵌套解构

  • 数组解构

  1. const arr = [1, "admin", "admin@qq.com"];
  2. // 模板解构
  3. const [id, name, email] = arr;
  4. console.log(id, name, email);
  5. // 也可以只解构其中一两个值
  6. const arr1 = [2, "admin22", "admin22@qq.com"];
  7. const [, username, email1] = arr1;
  8. console.log(username, email1);
  9. // 数组解构表达式
  10. // 更新数据
  11. let a = 10;
  12. let b = 20;
  13. let c = [5, 37];
  14. // 更新a和b的值
  15. [a, b] = c;
  16. console.log(a, b);
  17. // 设置默认值
  18. const arr2 = ["iPhone", "xmax"];
  19. // 和解构对象一样自定义的值优先级更高,有自定义值就赋自定义的值
  20. let [brand, model, color = "green"] = arr2;
  21. console.log(brand, model, color);
  22. // 在函数参数中使用数组解构
  23. function func([x, y]) {
  24. console.log(x + "*" + y + "=" + (x * y));
  25. }
  26. func(c);
  27. // 也可以在参数中设置默认值
  28. function func1([x, y, z = 6]) {
  29. console.log(x + "*" + y + "*" + z + "=" + (x * y * z));
  30. };
  31. func1(c);
  32. // 数组的嵌套解构
  33. const arr3 = [10, [20, [30], 40], 50];
  34. // 解构
  35. const [a1, [a2, [a3], a4], a5] = arr3;
  36. console.log(a1, a2, a3, a4, a5);

总结

1.了解let和const,var声明间的区别
2.对于解构的应用场景和使用有了些了解

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:模板字符串并非新事物, 是对原js中不规范的字符串进行了规范化, 其实这些在其它语言中不是事
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