ES6简介

ES6是什么

image.png

ECMAScript是什么

image.png

ECMA

具体是什么

image.png

ECMAScript的历史版本

image.png

ECMAScript的命名方式

image.png

ECMAScript与JavaScript的关系

image.png

ES6的兼容性

image.png

let和const

let和const是什么

  1. // 1.let 和 const 是什么
  2. // 声明变量或声明常量
  3. // var 声明变量
  4. // let 代替 var,声明变量
  5. // const 声明常量 constant
  6. // 2.let 和 const 的用法
  7. // var 一样
  8. var username = 'Alex';
  9. let age = 18;
  10. const sex = 'male';
  11. console.log(username, age, sex);
  12. // 3.什么是变量,什么是常量
  13. username = 'ZS';
  14. age = 28;
  15. console.log(username, age);
  16. // 报错
  17. sex = 'female';
  18. // var、let声明的就是变量,变量一旦初始化之后,还可以重新赋值
  19. // const 声明的就是常量,常量一旦初始化,就不能重新赋值了,否则就会报错

const

为什么需要const

  1. // let
  2. // let sex = 'male';
  3. // // ...
  4. // sex = 'female';
  5. // console.log(sex);
  6. // const
  7. // const sex = 'male';
  8. // // ...
  9. // sex = 'female';
  10. // console.log(sex);
  11. // const 就是为了那些一旦初始化就不希望重新赋值的情况设计的

const的注意事项

  1. // 2.1.使用 const 声明常量,一旦声明,就必须立即初始化,不能留到以后赋值
  2. // const sex;
  3. // sex='male'
  4. // const sex = 'male';
  5. // 2.2.const 声明的常量,允许在不重新赋值的情况下修改它的值
  6. // 基本数据类型
  7. // const sex = 'male';
  8. // sex = 'female';
  9. // 引用数据类型
  10. // const person = { username: 'Alex' };
  11. // // person = {};
  12. // person.username = 'ZhangSan';
  13. // console.log(person);

什么时候用const,什么时候用let

  1. // var
  2. // for (let i = 0; i < 3; i++) {}
  3. // const username = 'Alex';
  4. // // ...
  5. // username = 'ZhangSan';

let、const与var的区别

重复声明

  1. // 已经存在的变量或常量,又声明了一遍
  2. // var 允许重复声明,let、const 不允许
  3. // let a = 1;
  4. // // ...
  5. // let a = 2;
  6. // console.log(a);
  7. // function func(a) {
  8. // let a = 1;
  9. // }
  10. // func();

image.png

变量提升

  1. // var 会提升变量的声明到当前作用域的顶部
  2. // console.log(a);
  3. // console.log(a);
  4. // var a = 1;
  5. // 相当于
  6. // var a;
  7. // console.log(a);
  8. // a = 1;
  9. // console.log(a);
  10. // let、const 不存在变量提升
  11. // console.log(a);
  12. // let a = 1;
  13. // 养成良好的编程习惯,对于所有的变量或常量,做到先声明,后使用

暂时性死区

  1. // 只要作用域内存在 let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响
  2. // let、const 存在暂时性死区
  3. // let a = 2;
  4. // let b = 1;
  5. // function func() {
  6. // console.log(b);
  7. // // console.log(a);
  8. // // let a = 1;
  9. // }
  10. // func();
  11. // 养成良好的编程习惯,对于所有的变量或常量,做到先声明,后使用

window对象的属性和方法(全局作用域中)

  1. // 全局作用域中,var 声明的变量,通过 function 声明的函数,会自动变成 window 对象的属性或方法
  2. // let、const 不会
  3. // var/function
  4. // var age = 18;
  5. // function add() {}
  6. // console.log(window.age);
  7. // console.log(window.add === add);
  8. // let/const
  9. // let age = 18;
  10. // const add = function () {};
  11. // console.log(window.age);
  12. // console.log(window.add === add);

块级作用域

什么是块级作用域

  1. // var 没有块级作用域
  2. // for (var i = 0; i < 3; i++) {
  3. // // console.log(i);
  4. // }
  5. // console.log(i);
  6. // let/const 有块级作用域
  7. // for (let i = 0; i < 3; i++) {
  8. // // i = i+1
  9. // // console.log(i);
  10. // }
  11. // console.log(i);

作用域链

  1. // function func() {
  2. // for (let i = 0; i < 3; i++) {
  3. // // console.log(i);
  4. // }
  5. // }
  6. // func();
  7. // console.log(i);
  8. // 作用域链:内层作用域->外层作用域->...->全局作用域

有哪些块级作用域

  1. // {}
  2. // {
  3. // let age = 18;
  4. // // console.log(age);
  5. // }
  6. // console.log(age);
  7. // {}
  8. // for(){}
  9. // while(){}
  10. // do{}while()
  11. // if(){}
  12. // switch(){}
  13. // function(){}
  14. // const person = {
  15. // getAge: function () {}
  16. // };

作用域分块级、函数、全局作用域

let和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. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <title>let const 的应用</title>
  8. <style>
  9. body {
  10. padding: 50px 0 0 150px;
  11. }
  12. .btn {
  13. width: 100px;
  14. height: 100px;
  15. margin-right: 20px;
  16. font-size: 80px;
  17. cursor: pointer;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <button class="btn">0</button>
  23. <button class="btn">1</button>
  24. <button class="btn">2</button>
  25. <script>
  26. // 1.var
  27. // var btns = document.querySelectorAll('.btn');
  28. // for (var i = 0; i < btns.length; i++) {
  29. // btns[i].addEventListener(
  30. // 'click',
  31. // function () {
  32. // console.log(i);
  33. // },
  34. // false
  35. // );
  36. // }
  37. // 2.闭包
  38. // var btns = document.querySelectorAll('.btn');
  39. // for (var i = 0; i < btns.length; i++) {
  40. // (function (index) {
  41. // btns[index].addEventListener(
  42. // 'click',
  43. // function () {
  44. // console.log(index);
  45. // },
  46. // false
  47. // );
  48. // })(i);
  49. // }
  50. // 3.let/const
  51. let btns = document.querySelectorAll('.btn');
  52. for (let i = 0; i < btns.length; i++) {
  53. btns[i].addEventListener(
  54. 'click',
  55. function () {
  56. console.log(i);
  57. },
  58. false
  59. );
  60. }
  61. </script>
  62. </body>
  63. </html>