JS(三)let var const的区别 (ES6)

本文详细解析了let、const和var在JavaScript中的区别,包括作用域、变量声明提升、重复声明和赋值特性。重点讲解了局部作用域、常量性质、暂时性死区,并通过示例说明了它们在实际编程中的应用和限制。
摘要由CSDN通过智能技术生成

一.let var const的区别   


    1.var声明全局变量,作用域为全局。let、const具有局部作用域


     let与const声明的变量,如果在其所在的代码块内声明,则在代码块外访问无效。

     var声明的变量,可以全局访问,代码块外也可以访问。

​
// es5中定义一个变量
function add(){
  var a=12;//函数具有局部作用域
}
// console.log(a)  报错
  if(true){
    var b=2;//var具有全局作用域,在代码块外也可以访问。 在浏览器会被压到window全局里
    let c=3;//let,const局部作用域,在代码块外不可以访问
    const d=4;
    console.log(c) //3
     c=4  //let不可以重复声明,但可以重复初始化赋值
    console.log(c) //4
  }
console.log(b)//2
// console.log(c) 报错
// console.log(d) 报错

​


    2.var存在变量声明提升,var声明的变量可在声明前使用,只是这种情况下值为undefined。let、const没有变量声明提升,只能在声明后使用,否则报错。

    var a;//提升到作用域的最前面
    console,log(a);//undefined
    //var a = 3;
    a = 3;
    console.log(a); //3 

// tem2=2;

// const tem2;

// console.log(tem2)  //报错,const不会变量声明提升

3.

  • var可以重复声明且重新赋值一个变量,后面覆盖前面。
  • let不允许重复声明变量,否则报错。可以重复赋值
  • const不可以重复声明和赋值。

const声明常量,一旦声明不可修改。(这个不可修改指的是  变量指向的内存地址不变,内存地址内保存的是实际指向数据的指针,const只能保证这个指针是固定的,即总是指向一个固定的地址。也就是不能把变量指向另一个地址,旦对象本身是可变的。) 

4. let、const存在暂时性死区;var具有全局作用域,不存在暂时性死区。

// let const 暂时性死区
var tem=1;
if(true){
  tem='ww';
  //let tem;  //在代码块内,使用let声明变量,在let之前该变量都是不可用的,这就是暂时性死区。tem赋值不会起作用,报错
}
console.log(tem)//ww

二.关于声明后变量值是否可以重复覆盖?


  1.var  可以重复定义且重复赋值。
  2.let  不可重复定义,但可以重复赋值。
  3.const   不可重复定义,且不可重复赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值