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三者之间的区别就简单介绍到这里了,祝你生活愉快,早日暴富!

猜你喜欢

转载自blog.csdn.net/m0_37873510/article/details/126431321