developer-plus / interview

https://interview.developer-plus.org
MIT License
9 stars 1 forks source link

JS:let,const,var的区别? #7

Open chenfan0 opened 2 years ago

chenfan0 commented 2 years ago

let和var的区别:

console.log(b) // 报错 ReferenceError: Cannot access 'b' before initialization let b = 100

- var声明的变量会被挂在全局对象上上,而let声明的变量不会。
```js
var a = 100
console.log(window.a)  // 100
let b = 100
console.log(window.b) // undefined 

if (true) { // 因为在该if块级作用域内,存在a的声明。所以在该作用域内,声明a之前都是访问不了a的。 console.log(a) // 报错 ReferenceError: Cannot access 'a' before initialization let a = 200 }


### let和const的区别:
- let声明的变量可以被重新赋值,而const声明的变量不能被重新赋值。(注意:const声明的变量是不能被重新赋值,但是如果const声明的变量赋值为一个对象,那么是可以对这个对象的属性进行增删改查,但是不能重新赋值,也就是指针不能变)
```js
let a = 100
a = 200

const b = 100
b = 200 // TypeError: Assignment to constant variable.

const c = {
  name: 'aaa',
  age: 18
}

c.name = 'bbb'
c.id = 123
c = {} // TypeError: Assignment to constant variable.