ES6 块级作用域绑定和变量提升机制详解
21 浏览量
更新于2024-08-28
收藏 67KB PDF 举报
ES6 杂记(解构)
ES6 中的块级作用域和变量提升机制是非常重要的概念。在函数作用域或者全局作用域中,通过 var 声明的变量,无论在哪里声明,都会被当做成在当前作用域或顶部声明,这就是函数提升(Hoisting)。这种机制可能会导致一些意外的结果。
块级作用域是指在函数内部或大括号之间的区域中声明的变量,这些变量只能在该作用域中访问,无法在外部访问。块级声明用于在制定块的作用域之外无法访问的变量。
let 声明是块级作用域中的一种声明方式,它对变量声明,不能变量提升。let 声明的变量只能在当前块级作用域中访问,无法在外部访问。例如:
```
if (true) {
let age = 20
}
console.log(age) // 报错
```
需要注意的是,let 声明禁止重复声明,例如:
```
var a = 0
let a = 1 // 报错
```
但是,如果在块级作用域中声明变量,那么不会报错,例如:
```
var a = 0
if (true) {
let a = 1 // 不报错
}
```
块级作用域不会提升,例如:
```
console.log(a) // 会报错(临时死区TemporalDeadZone)
console.log(typeof a) // 会报错
let a = 1
console.log(a) // undefined 变量提升
```
const 声明是块级作用域中的一种声明方式,它对常量的声明,同样也不会变量提升。const 声明的变量只能在当前块级作用域中访问,无法在外部访问。例如:
```
const a = 1 // 有效
const a // 无效
const a = 0 // 重复声明,报错
```
需要注意的是,const 声明对象时,不允许修改绑定,但允许修改值,例如:
```
const person = {
age: 20
}
person.age = 21 // 有效
```
在循环中,块级作用域可以解决变量提升的问题,例如:
```
var fns = []
for (var i = 0; i < 10; i++) {
fns.push(function(i) {
return function() {
console.log(i);
};
}(i));
}
fns.forEach(function(fn) {
fn(); // 输出 0 到 9
});
// 使用 let
var fns = [];
for (let i = 0; i < 10; i++) {
fns.push(function() {
console.log(i);
});
}
fns.forEach(function(fn) {
fn(); // 输出 0 到 9
});
```
在全局作用域中,let 和 const 与 var 的另一个区别是它们在全局作用域中的行为。这意味着 var 很可能意外覆盖了已经存在的全局属性。
ES6 中的块级作用域和变量提升机制是非常重要的概念,需要开发者了解和掌握,以避免一些意外的结果。
2020-10-21 上传
2021-01-08 上传
2020-10-17 上传
2023-08-26 上传
2023-06-07 上传
2023-06-09 上传
2023-06-09 上传
2024-01-19 上传
2023-03-07 上传
weixin_38672794
- 粉丝: 5
- 资源: 924
最新资源
- Leetcode-Exercises:Leetcode练习以提高编程能力
- 字母大小写转换算法:标题大小写,切换大小写
- PhoneNumber.js:phonenumber.js是一个JavaScript库,用于验证和格式化电话号码
- bowlpowl:用于创建简单的大学碗池跟踪网站PHP源代码-Source website php
- VSWE-Tutorials:在遵循 VSWE 的教程时使用的存储库
- 448916,c语言atof函数源码,c语言
- my-hugo-blog:我的雨果博客
- VacBanChecker:一个用于检查是否禁止蒸汽疏散的书签
- ANet:基于Redis网络模型的简易网络库,网络模块代码取自Redis原始代码
- WEB-ONE-ESQUELETO:具有纯文本标记语言的简单页面。 骨架设计!
- PHP-Website:此存储库是主题开源技术学术分配的一部分-Source website php
- C#-Leetcode编程题解之第16题最接近的三数之和.zip
- rxc:C 的React式扩展
- montita11:项目
- mwave:可以显示音频波形的音乐播放器
- updatecsswithjspractice