1、let命令

  1. <script>
  2. //let关键字就是用来声明变量的
  3. //使用let关键字声明的变量具有块级作用域
  4. //在一个大括号中 使用let关键字声明的变量才具有块级作用域,var关键字不具备这个特点
  5. /* if (true) {
  6. let a = 10;
  7. }
  8. console.log(a);*/ //a is not defined
  9. //防止循环变量变成全局变量
  10. console.log('-------------防止循环变量变成全局变量-----------------');
  11. for (var i = 0; i < 2; i++) {}
  12. console.log(i);
  13. /* for (let j=0;j<2;j++){}
  14. console.log(j); */ //
  15. console.log('-------------let声明不存在变量提升-------------');
  16. //let声明的变量不存在变量提升
  17. console.log(c);
  18. var c = 10;
  19. /* console.log(b);
  20. let b=10; */
  21. //使用let关键字声明的变量具有暂时性死区的特性
  22. var temp = 100
  23. if (true) {
  24. console.log(temp);
  25. let temp = 200;
  26. }
  27. </script>

2、const命令

  1. <script>
  2. //const用来声明一个常量的
  3. //const声明必须赋初始值
  4. /* if(true){
  5. const a=10
  6. }
  7. console.log(a); */ //a is not defined
  8. </script>
  9. <script>
  10. /* const b=10;
  11. b=100;
  12. console.log(b); */
  13. let c = 10;
  14. c = 100;
  15. console.log(c);
  16. const arr = [1, 2];
  17. arr[0] = 100; //引用类型可以改变值或者添加属性
  18. console.log(arr);
  19. arr = [100, 200] //引用类型重新赋值会报错
  20. console.log(arr);
  21. </script>

3、let、const和var的区别

  1. // demo5
  2. var 关键字的特点:
  3. - 变量(预解析)提升,可以在声明的前面使用
  4. - 同一作用域内可以多次声明同一个变量(即便这种方式不建议这样去写)
  5. - 能让它形成作用域的只有函数
  6. let:声明变量的关键字
  7. - 没有变量提升,只能在声明之后使用
  8. - 同一作用域内只能声明一次
  9. - 你声明的变量的作用域仅限于最近的花括号内( {}
  10. const:只能用来声明常量,该常量一旦声明其值就不能改变( let的唯一区别 )
  11. - 没有变量提升,只能在声明之后使用
  12. - 同一作用域内只能声明一次
  13. - 你声明的变量的作用域仅限于最近的花括号内( {}
  14. - const声明的变量: 不允许重新赋值,引用数据类型可以添加或修改属性