博客列表 >let ,const功能与应用场景,对象解构与数组解构-Es6-47课9.1

let ,const功能与应用场景,对象解构与数组解构-Es6-47课9.1

希望
希望原创
2020年09月06日 14:16:26920浏览

一、let ,const功能与应用场景

1、let功能与应用场景

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>let</title>
  7. </head>
  8. <body>
  9. <ul>
  10. <li>itme1</li>
  11. <li>itme2</li>
  12. <li>itme3</li>
  13. <li>itme4</li>
  14. <li>itme5</li>
  15. </ul>
  16. <script>
  17. // 1. let 声明变量
  18. let num;
  19. // 1.1 禁止重复声明
  20. // let num;
  21. num = 10;
  22. console.log(num);
  23. let count = 1;
  24. console.log(count);
  25. // console.log(username);
  26. // 1.2 不存在变量声明提升
  27. let username = "melinda";
  28. console.log(username);
  29. function fn() {
  30. // console.log(username);
  31. let username = "jack";
  32. }
  33. console.log(fn());
  34. // 1.3 支持块作用域
  35. if (true) {
  36. let price = 200;
  37. }
  38. // console.log(price);
  39. let lis = document.querySelectorAll("li");
  40. for (let i = 0; i < lis.length; i++) {
  41. lis[i].addEventListener("click", function () {
  42. console.log("点击了第 ", i + 1, " 个");
  43. });
  44. }
  45. </script>
  46. </body>
  47. </html>

2、const功能与应用场景

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>const</title>
  7. </head>
  8. <body>
  9. <script>
  10. // const 声明只读变量: 常量
  11. // 1. const常量, 在一个脚本的生命周期内,禁止更新,所以在声明时必须初始化
  12. const NATION = "CHINA";
  13. // 2. 不允许重复声明
  14. // const NATION = "USA";
  15. // 3. 支持块作用域
  16. if (true) {
  17. const EMAIL = "123456@qq.com";
  18. console.log(EMAIL);
  19. }
  20. // console.log(EMAIL);
  21. // let 与 const 相同之处
  22. // 1. 禁止重复声明
  23. // 2. 支持块作用域
  24. // 不同之外,let允许更新,const禁止更新
  25. // 有一些数据类型强烈推荐使用const
  26. // 对象或数组推荐使用const
  27. const arr = [10, 30, 50];
  28. console.log(arr);
  29. arr[1] = 90;
  30. console.log(arr);
  31. // 重新赋值就会报错
  32. // arr = ["a", "b"];
  33. const obj = { x: "red", y: "blue" };
  34. console.log(obj);
  35. obj.x = "green";
  36. console.log(obj);
  37. // obj = {};
  38. const body = document.body;
  39. body.style.backgroundColor = "gray";
  40. </script>
  41. </body>
  42. </html>

二、对象解构与数组解构语法与应用场景

1、对象解构语法与应用场景

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>解构</title>
  7. </head>
  8. <body>
  9. <script>
  10. // 解构主要是针对对象和数组
  11. // const obj = { x: 1, y: 2, z: 3 };
  12. // 模板解构
  13. const { x, y, z } = { x: 1, y: 2, z: 3 };
  14. console.log(x, y, z);
  15. // 解构的目的: 将集合数据按规则打散到一些独立的变量中
  16. const product = {
  17. name: "电脑",
  18. price: 10000,
  19. };
  20. // 1. 传统
  21. let name = product.name;
  22. let price = product.price;
  23. console.log("%s : %c %d", name, "color:red", price);
  24. // 2. 对象解构
  25. const user = {
  26. username: "melinda",
  27. email: "melinda@php.cn",
  28. };
  29. // 解构语法: 解构变量声明 = 要被解构的数据
  30. let { username, email } = {
  31. username: "melinda",
  32. email: "melinda@php.cn",
  33. };
  34. console.log(username, email);
  35. // 1. 对象的属性名必须与左边解析变量声明模板中的变量同名
  36. // 2. 解构变量必须初始化
  37. // let { x, y }
  38. // 3. 可以将左侧的变量声明看做右侧的赋值模板
  39. // 3. 解构表达式: 用来更新变量
  40. let a = 10;
  41. let b = 20;
  42. console.log(a, b);
  43. // a = 150;
  44. // b = 250;
  45. // console.log(a, b);
  46. // 1. 场景1,更新,添加大括号包起来
  47. ({ a, b } = { a: 50, b: 250 });
  48. console.log(a, b);
  49. // 2. 场景2
  50. function out({ a: x, b: y }) {
  51. console.log(x, y);
  52. x = 1;
  53. y = 2;
  54. console.log(x, y);
  55. }
  56. out({ a: 11, b: 22 });
  57. // 4. 解构声明中设置默认值
  58. let stu = {
  59. stuName: "ciki",
  60. gender: "male",
  61. };
  62. let { stuName, gender = "female", age = 28 } = stu;
  63. console.log(stuName, gender, age);
  64. // 5. 解构声明中使用变量别名
  65. const book = {
  66. name: "ES6开发指南",
  67. price: 109,
  68. };
  69. // 起别名,因为最上面有重复的name
  70. let { name: bookName, price: bookPrice } = book;
  71. console.log(bookName, bookPrice);
  72. </script>
  73. </body>
  74. </html>

2、数组解构语法与应用场景

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>数组解构</title>
  7. </head>
  8. <body>
  9. <script>
  10. let user = [10, "admin", "admin@php.cn"];
  11. // 1. 数组解构声明
  12. let [id, name, email] = user;
  13. console.log(id, name, email);
  14. // 只解构name
  15. let [, username, ,] = user;
  16. console.log(username);
  17. // 2. 数组解构表达式: 更新数组元素
  18. let lesson = "es6";
  19. let grade = 80;
  20. console.log(lesson, grade);
  21. [lesson, grade] = ["php", 90];
  22. console.log(lesson, grade);
  23. // 3. 使用默认值
  24. let [brand, model, color = "black"] = ["huawei", "p40", "red"];
  25. console.log(brand, model, color);
  26. // 4. 在函数参数中也可以使用数组解构
  27. function add([x, y = 90]) {
  28. return x + y;
  29. }
  30. console.log(add([11, 22]));
  31. console.log(add([2]));
  32. // 5. 数组嵌套解构
  33. let [a1, a2, [a3, a4], a5] = [11, 22, [33, 44], 55];
  34. console.log(a1, a2, a3, a4, a5);
  35. </script>
  36. </body>
  37. </html>
  • 总结:
  • let: 禁止重复声明,没有变量声明提升,支持块作用域
  • const: 声明只读变量(常量),禁止重复声明,禁止更新,支持块作用域
  • 解构主要是针对对象和数组,也可单独解构对象或数组中的一项
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议