var let const --变量声明

首先说明一下作用域在ES6只前只有两种作用域,ES6之后引用了块级作用域 {} 在块级作用域中用let定义的变量在外面是访问不了,

  • ES6之前:
    • 一种是全局作用域,
    • 一种是函数作用域
  • ES6之后:
    • 一种是全局作用域,
    • 一种是函数作用域
    • 一种是块级作用域

var 声明变量的缺点

  1. 允许重复声明变量
  2. 变量的提升(产生闭包问题)
  3. 全局变量挂载到全局对象上面,导致全局对象成员污染

let声明

  1. let声明声明的变量不会挂载到全局对象
  2. let声明的变量在 当 前 作 用 域 \color{red}{当前作用域} 不能重复声明
  3. let声明的变量不会有变量声明提升(所有就不能在变量声明之前使用 会报错:“Cannot access ‘qw’ before”。其实在let声明也会有变量声明提升,提升后会将其放入到 暂 时 性 死 区 \color{red}{暂时性死区} ,如果访问变量位于暂时性死区,就会报错“Cannot access ‘qw’ before”。当代码运行到变量声明语句的时候,会将变量重暂时性死区中移除)
    在循环中使用let声明的变量在循环结束后是不能访问let声明的变量

const声明

const和let其他都相同,只有一点不相同const声明了变量就不能更改,所以我们也叫const为常量
在实际开发中,尽量使用const来声明变量 (因为开发中有很多变量都不会更改的,使用const就能避免出错)

//const 是可以更改引用类型数据里面内容
const a = {
    name: '123',
    age: '18'
}
a.name = '789'
//这样是不报错的因为改的不是a a在栈内存里面存的引用地址,数据存在堆内存里面a.name相当于是去改堆内存里面东西
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值