Webcourse/06-JavaScript进阶/01-var、let、const的区别.md
2020-06-04 14:49:45 +08:00

67 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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
关于暂时性死区的更多介绍详本项目的另一篇文章ES6变量
## 参考链接
- [JS中varletconst区别](https://juejin.im/post/5e49249be51d4526e651b654)