var、let和const三者之间的区别

var、let和const三者之间的区别:

  1. var、let和const都是用来声明变量的。
  2. var声明的变量不存在块级作用,但是存在变量提升,而且同一个作用域下可以重复声明变量名称相同的变量。
  3. let和const声明的变量存在块级作用域,但是不存在变量提升,会存在暂时性死区,而且同一个作用域下不能重复声明变量名称相同的变量。
  4. const声明的是常量,在声明的时候需要设置一个初始化的值,而且不能修改。

使用var、let和const声明变量:

// var声明变量
var id = 1

// let 声明变量
let name = '夏洛特'

// const声明的是常量
const COLOR_RED = 'red'

var声明的变量不存在块级作用,但是存在变量提升:

// var声明的变量不存在块级作用
if(true) {
    var str = '在if代码块中声明的变量'
}
console.log(str) // 在if代码块中声明的变量

// var声明的变量存在变量提升
//在声明num变量之前访问
console.log(num) // 打印undefined,不会报错
var num = 100

// 可以在同一个作用域下可以重复声明变量名称相同的变量。
var name = '张三'

var name = '李四'

console.log(name) // 李四 会覆盖前面的变量

let和const声明的变量存在块级作用域,但是不存在变量提升,会存在暂时性死区:

// let和const声明的变量存在块级作用域
if(true) {
    let str = '张三'
    const COLOR_RED = 'red'
}
// 会报错
console.log(str) // 报错:str is not defined
console.log(COLOR_RED) // 报错:COLOR_RED is not defined

// 不存在变量提升,会存在暂时性死区
console.log(num) // 报错: Cannot access 'num' before initialization
console.log(color) // 报错: Cannot access 'color' before initialization
let num = 100
const color = 'yellow'

let和const在同一个作用域下不能重复声明变量名称相同的变量:

{
    let str = '变量A'
    let str = '变量B' // 报错:Identifier 'str' has already been declared
}

{
    const color = 'red'
    const color = 'yellow' // 报错:Identifier 'color' has already been declared
}

const声明的是常量,在声明的时候需要设置一个初始化的值,而且不能修改:

const book = '水浒传'
book = '红楼梦' // 报错: Assignment to constant variable.
注意:如果是引用类型,是可以修改对象内部的属性和值的,还有可以修改数组的元素,引用类型的常量不能修改的是引用地址。
// 修改对象的某个属性的值
const obj = {
    id: 1,
    name: '郝仁'
}
obj.name = '郑郝仁'
console.log(obj) // {id: 1, name: '郑郝仁'}

// 修改数组的元素
const arr = [1, 2, 3]
arr.push(4)
console.log(arr) // [1, 2, 3, 4]
如果修改对象或者数组的引用地址:
// 修改对象的引用地址
const obj = {
    id: 1,
    name: '郝仁'
}
obj = {
    name: '管理员',
    password: '123456'
}
console.log(obj) // 报错:Assignment to constant variable.

// 修改数组的引用地址
const arr = [1, 2, 3]
arr = [3, 2, 1]
console.log(arr) // 报错:Assignment to constant variable.

var、let和const三者之间的区别就简单介绍到这里了,祝你生活愉快,早日暴富!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值