const、let、var的区别

const、let、var的区别

1)、相同点

都能在全局和局部声明,在全局声明的是全局变量,在局部声明的局部变量

 全局变量
 var a = 1
 let b = 2
 const c = 3
 局部变量
function name(params) {
    var a = 1
    let b = 2
    const c = 3
  }

2)、不同点

1、变量申明

var声明变量:

1、var声明变量时可以只声明不赋值(不建议)
2、var声明的变量可以重复,后面的会覆盖前面的

//只声明不赋值
var a
重复声明
var a=10
var a=20
console.log(a)//打印20
let声明变量:

1、let声明变量时可以只声明不赋值(不建议)
2、let声明的变量在同一作用域内不可以重复,会报错;
在这里插入图片描述
但是在不同的作用域内不会影响。
在这里插入图片描述

const声明变量:

1、const声明变量时必须赋值,不赋值会报错
2、const声明的变量在同一作用域内不可以重复,会报错(同let);

2、变量提升

什么是变量提升:变量提升是变量能在变量声明的前面使用,不会报错
var:var声明的变量是支持变量提升,预解析的结果是undefined
let和const:变量都不支持变量提升,会报错

		//var a var声明的变量提升,即预解析
        console.log(a);
        console.log(b);
        console.log(c); 
        var a = 1
        let b = 2
        const c = 3

执行结果var变量提升返回undefined,let和const不会进行预解析,程序报错
在这里插入图片描述

3、作用域

let和const具有块级作用域,var不存在块级作用域,可以跨块访问, 不能跨函数访问

      if(true){
            var a = 0
            let b = 0
            const c = 0
        }
        console.log(a);//0
        console.log(b);//报错
        console.log(c);//上面报错,下面不执行

这里只有var声明的变量才能打印出来,因为var声明的是全局变量

    //var 声明的变量不能跨作用域使用
    function test() {
             var message = "zimo";   // 局部变量
            }
       test();
       console.log(message);  // 报错

4、暂时性死区

在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区,只能在当前作用域内查找。使用var声明的变量不存在暂时性死区。

        // name会被提升
        console.log(name); // undefined
        var name = 'zimo';
 
        // age不会被提升
        console.log(age); // ReferenceError:age没有定义
        let age = 18;
 
        // sex不会被提升
        console.log(age); // ReferenceError:age没有定义
        const sex = "男";

总结

不同点:
const声明的变量必须赋初值
const声明的变量是常量,不能发⽣改变,可以理解为let,const的声明不能重复
cons、let声明的变量不能提升
const、let声明的变量只在当前块作⽤域中有效
const、let声明的变量会产⽣暂时性的死区,只能在当前块作⽤域中查找

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值