Es6-let和const

127 阅读2分钟

①let和const

1.let 和const是什么

声明变量或声明常量

var 声明变量

let 代var声明变量

const 声明常量 constant

2.let 和const 的用法

和 var 一样

3.什么是变量,什么是常量

var、let声明的就是变量,变量一旦初始化之后还可以重新赋值

const声明的就是常量,常量一旦初始化,就不能重新赋值了,否则就会报错

② const

1.为什么需要const

     let
     ```
    let 
     sex="male"
     sex= "female"
     console.log(sex);
    const
     const sex="male"
     sex= "female"
     console.log(sex);
     ```

const就是为了那些一旦初始化,就不希望重新赋值的情况设计的

2.const注意事项

2.1使用const声明的常量,一旦声明,就必须立即初始化,不能留到以后赋值

     const sex;
     sex="male"

2.2const声明的常量,允许在不重新赋值的情况下修改它的值

     基本数据类型
     const sex="male"
     sex="female"
     引用数据类型
     const person={username:"Alex"}
     person.username="zhangsan"
     console.log(person);

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

   不需要改值的情况使用const

③let、const与var的区别

1.重复声明

已经存在的变量或常量,又声明了一遍

var允许重复声明,let、const不允许

2.变量提升

var 会提升变量的声明到当前作用域的顶部

let const不存在变量提升

养成良好的编程习惯,对于所有的变量或者常量,做到先声明,后使用

3.暂时性死区

只要作用域内存在let、const 他们所声明的变量或常量就自动"绑定"这个区域,不再受到外部作用域的影响

4.window对象的属性和方法

全局作用域中,var声明的变量,通过function声明的函数会自动变成window对象的属性或方法

④块级作用域

1.什么是块级作用域

var 没有块级作用域

    console.log(i);
}
console.log(i);

let /const有块级作用域

    console.log(i);
}
console.log(i);

2.作用域链

    for(let i=0;i<3;i++){
        console.log(a);
    }
}
func()
console.log(i);

作用域链:内层作用域->外层作用域->...->全局作用域

3.有哪些块级作用域

块级作用域

for(){}
while(){}
do{}while()
if(){}
switch(){}

函数作用域

function(){}

对象不构成作用域

const person={
    getAge:function(){}//变相的函数作用域
}

⑤let和const的应用

<body>
    <button class="btn">0</button>
    <button class="btn">1</button>
    <button class="btn">2</button>
</body>
闭包
  for(var i=0;i<btns.length;i++){
    (function(index){
        btns[index].addEventListener(
          "click",
          function(){
              console.log(index);
          },
          false
      )
    })(i)
  }
      let/const
      for (let i = 0; i < btns.length; i++) {
        btns[i].addEventListener(
          "click",
          function () {
            console.log(i);
          },
          false
        );
      }