【小白鲨笔记】js面试题(十五)

18 篇文章 0 订阅
本文详细解析了ES6中var、let、const三种变量声明方式的不同,包括提升机制、重复声明、数据类型和作用域,并通过实例演示了它们的特性。重点讲解了常量的注意事项和引用类型内部的可变性,以及作用域在不同场景中的体现。
摘要由CSDN通过智能技术生成

十五、ES6:var、let、const

  • 相同:都可以声明变量

  • 区别

    varletconst
    变量提升没有没有
    重复声明可多次声明同变量不可以重复声明不可以重复声明
    变量/常量变量:可再次赋值变量:可再次赋值常量:不可再次赋值
    作用域无自身作用域具备自身作用域具备自身作用域
// 1. 变量提升
console.log(a,b,c) //undefined, error, error
var a = 10
let b = 1
const c = 2
// 2. 重复声明
var aa = 11
var aa = 13
console.log(a) //13
let bb = 22
let bb = 23
console.log(bb) //error
const cc = 33
const cc = 34
console.log(cc) //error
// 3. 常量/变量
var aaa = 1
aaa = 2
console.log(aaa) //2
let bbb = 3
bbb = 4
console.log(bbb) //4
const ccc = 5
ccc = 6
console.log(ccc) //error

❗常量注意点:引用类型内部是可以允许更改的

const obj = {a:1}
obj = 'asd' //error
obj.a = 2
// 4. 作用域
if (true) {
    var a = '1'
    let b = '2'
    const c = '3'
}
console.log(a,b,c) // '1', error, error
考题1:let、const没有变量提升机制
console.log(str) //undefined
var str = 'hey'
console.log(num) //报错
let num = 10
考题2:let、const自身作用域问题
function demo(){
    let n = 2
    if (true) { let n = 1 } //let作用域生效
    console.log(n) //2
}
考题3:用const声明引用数据类型内部数据可以更改
const arr = ['a','b','c']
arr[0] = 'aaaaa'
console.log(arr) //['aaaa','b','c'] -- 不会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值