Webcourse/05-JavaScript进阶/01-var、let、const的区别.md

64 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-06-03 23:02:10 +08:00
## varletconst的区别
### var声明的变量存在变量提升let和const声明的变量不存在变量提升
var 声明的变量
```js
console.log(a); // 打印结果undefined ==> a已经声明但没有赋值
var a = '我是a';
```
let 声明的变量
```js
console.log(b); // 打印结果报错Uncaught ReferenceError: Cannot access 'b' before initialization ==> 找不到b这个变量
let b = '我是b';
```
const 声明的变量
```js
console.log(c); // 打印结果报错Uncaught ReferenceError: Cannot access 'c' before initialization ==> 找不到c这个变量
const c = '我是c';
```
### 暂时性死区 DTC
举例1表现正常
```js
const name = 'qianguyihao';
function foo() {
console.log(name);
}
foo(); // 执行函数后打印结果smyhvae
```
上方例子中 变量 name 被声明在函数外部此时函数内部可以直接使用
**举例2**报错
```js
const name = 'qianguyihao';
function foo() {
console.log(name);
const name = 'hello';
}
foo(); // 执行函数后控制台报错Uncaught ReferenceError: Cannot access 'name' before initialization
```
代码解释如果在当前块作用域中使用了变量 name并且当前块作用域中通过 let/const **使 DTC**DTC
## 参考链接
- [JS中varletconst区别](https://juejin.im/post/5e49249be51d4526e651b654)