快速了解var let const 的区别

本文详细介绍了ES6中var、let和const声明变量的区别。let形成块级作用域,存在暂时性死区,不允许重复声明;var在函数外创建全局变量,可重复命名并能变量提升;const用于声明常量,一旦赋值基本类型不可更改,引用类型则可修改其内部值。同时,let有助于防止变量污染,确保代码的块级作用域安全。在循环中,let解决了var导致的闭包问题,使得每次迭代都拥有独立的变量实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单了解var const let 的区别

es6中新增声明变量方式,在同一个作用域 全部都是唯一的,禁止重复声明

let

1.let会形成块级作用域
2.不能提前被声明 如果在当前作用域被提前声明的话 会形成暂时性死区

TDZ又称暂时性死区,大概意思是变量在作用域内已经存在,必须在 let或者const声明后面使用。
ES6明确规定,如果区块中存在let/const命令,这个区块用这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用的变量,就会报错( can’t access lexical declaration ‘a’ before initialization)
TDZ本质:只要一进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量

    //  can't access lexical declaration 'a' before initialization
   // console.log(a);  // bug 暂时性死区,声明之前不能使用
   let a= 123; 

3.let在函数中不能被当做形参
4.在同一作用域下 var和let不能声明同一个变量

        {  
            let a= 123; 
            // console.log(a);
            // 不能重复声明
            // var a = 1;  // bug edeclaration of let a 1let.html:18:16note: Previously declared at line 14, column 161let.html:14:16
        }

5.防止变量污染可以使用let

   // 防止变量污染
        // let---> var 就是变量污染
        for(let i =0;i<3;i++){
            setTimeout(function(){
                console.log(i);
            },15);
        }
    // 使用let 代码执行结果会是0 1 2
    // 使用var 代码执行结果是 3 3 3 

var

1.var除了在函数外都是声明一个全局变量
2.var可以重复命名
3.var可以变量提升

const

1.const是常量
2.const赋值的是基本数据类型的时候 不可以被更改
3.当const被赋值的是引用数据类型的时候是可以被更改的 因为引用数据类型存放的是地址 对象里面的数据是可以更改的
4.不能变量提升 不能重复命名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值