ES6 - let和const

let 和 const

1.let和const是什么?
   声明变量或常量
   var 声明变量
   let代替var 声明常量
   const声明常量constant
   
   注意:
      var let 初始化以后还可以重新赋值
      const 初始化后 不允许重新赋值
        var username = 'xiaohong';
        let age = 18;
        const sex = 'nan'
        console.log(username, age, sex); //xiaohong 18 nan
        age = 20;
        sex = 'nv'
        console.log(username, age, sex);//报错
2. const

为什么需要const?
const的出现,就是为了让那些一旦初始化,不希望被重新赋值的情况设置的

   //let
        let sex = 'nan';
       //...
        sex = 'nv';
        console.log(sex);//nv
        const sex = 'nan';
        sex = 'nv';
        console.log(sex);//报错

const的注意事项
1.一旦声明要立即初始化

        const o;  //错误
        o = 123;  //错误

2.const声明的常量,允许在不重新赋值的情况下修改他的值
基本数据类型 -(不能在修改)

        const sex1 = 'nan';
         sex1 = 'nv';
         //引用数据类型
         const person = {
             username: 'xiaohong'
        };
        person = {};//错误
        person.username = 'zhangsan';
        console.log(person);//{username: "zhangsan"}

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

        for (let index = 0; index < array.length; index++) {}
        const username = 'zhangsan';
        username = 'lisi'; //无妨,错误不会被湮灭
3.var let const 的区别

1.重复声明
已经存在的变量或常量 又重新声明一次
var 允许重复声明 let const不允许

		var a = 1;
        var a = 2;
        console.log(a); //2
        let b = 1;
        let b = 2;
        console.log(b); //报错

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

   // console.log(a); //报错
        console.log(a); //undefined
        var a = 1;
        // 相当于
        var a;
        console.log(a);//undefined
		// let和const不存在变量提升
        console.log(a); //报错
        let a = 0;

3.暂时性死区
只要作用域内存在let const,他们所声明的变量或者常量就自动“绑定”这个区域,
不再受到外部作用域的影响
let const 存在暂时性死区

  let a = 1;
        let b = 0;
        function fun() {
            console.log(b); //0
            console.log(a); //报错
            let a = 1; //暂时性死区
        }
        fun();

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

	   //var/function 
       var age = 18;
        function add() {}
        console.log(window.age); //18
        console.log(window.age == add); //true;
        //let/const
        let age = 18;
        function add() {}
        console.log(window.age); //undefined
        console.log(window.age == add); //false;

5.块级作用于
什么是块级作用域?

  1. var 没有块级作用域
 		for (var i = 0; i < 3; i++) {
            console.log(i); //0,1,2
        }
        console.log(i); //3
  1. let const有块级作用域
		for (let i = 0; i <= 3; i++) {
            console.log(i); //0,1,2
        }
        console.log(i); //报错
  1. 作用域链
    	{}
        {
            let age = 18;
            console.log(age); //18
        }
        console.log(age); //报错
        for(){}
        while(){}
        do{}while()
        if(){}
        switch(){}
4.小结
  1. let 和 const 是什么
    let:声明变量
    const:声明常量
  2. const
    const 声明的是常量
    const 声明后必须立即初始化
    const 声明的常量可以修改,但不能重新赋值
  3. let、const 与 var 的区别
    重复声明
    变量提升
    暂时性死区
    块级作用域(重点)
    window 对象的属性和方法(全局作用域中)
  4. 块级作用域
    有哪些块级作用域:
    {}、for、while、do while、if、switch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值