var、let 与 const 的区别

var、let 与 const 的区别

1. 块级作用域

  • let/const:具有块级作用域(由 {} 包裹的代码区域)
  • var:无块级作用域  
    解决的问题
      - 防止内层变量覆盖外层变量
      - 避免循环计数变量泄露为全局变量

2. 变量提升

  • var:存在变量提升(可先使用后声明,值为 undefined
  • let/const:无变量提升(必须先声明后使用)

3. 全局属性绑定

  • var:自动成为全局对象属性(浏览器为 window,Node.js 为 global
  • let/const:不会绑定到全局对象

4. 重复声明

  • var:允许重复声明,后者覆盖前者
  • let/const:禁止重复声明同一变量

5. 暂时性死区

  • let/const:声明前不可访问(存在暂时性死区)
  • var:无暂时性死区

6. 初始值设置

  • var/let:可不设置初始值
  • const:必须初始化赋值

7. 指针指向

  • let:可重新赋值
  • const
      - 基本类型:不可修改值
      - 引用类型:不可修改指针,但可修改对象属性

代码示例

// 块级作用域演示
{
    var a = 1;
    let b = 2;
}
console.log(a); // 1
console.log(b); // ReferenceError

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值