ES6-ES10 新特性详解:let、const、解构赋值与模板字符串

需积分: 3 1 下载量 26 浏览量 更新于2024-08-05 收藏 20KB MD 举报
"ES6-ES10新特性概述" ES6至ES10引入了许多新的语法特性,极大地提升了JavaScript的开发效率和代码可读性。以下是对这些新特性的详细解析: ### ES6 新特性 #### let 关键字 1. **变量不能重复声明**:与`var`不同,`let`声明的变量在同一作用域内不能再次声明。 2. **块级作用域**:`let`遵循块级作用域,这意味着它只在声明它的代码块内有效。 3. **不存在变量提升**:`let`声明的变量不会在声明之前被提升到作用域顶部。 4. **不影响作用域链**:即使在块级作用域内,如果函数内部未声明变量,仍然会向外层作用域查找。 #### const 常量 1. **必须初始化**:声明`const`时必须赋值。 2. **通常使用大写字母表示**:虽然不是强制规则,但常量通常用全大写字母表示。 3. **值不可变**:一旦声明,常量的值不能更改。 4. **块级作用域**:与`let`相同,`const`也有块级作用域。 5. **元素修改不报错**:对于数组和对象,虽然常量本身不能改变,但其元素或属性可以被修改。 #### 解构赋值 1. **数组解构**:可以从数组中提取值并赋值给变量。 2. **对象解构**:可以从对象中提取属性并赋值给变量,支持嵌套解构。 3. **连续解构**:可以连续解构复杂结构,如嵌套对象。 #### 模板字符串 1. **声明**:使用反引号(`)创建模板字符串。 2. **包含换行**:模板字符串可以包含换行,保持原始格式。 3. **变量拼接**:使用`${变量名}`在字符串中插入变量的值。 ### ES7新特性 #### 扩展运算符(...) 扩展运算符允许你在数组、函数调用等场景下展开一个可迭代对象。 #### async/await 异步编程的新方式,`async`函数返回一个Promise,`await`用于等待Promise的解决,使异步代码看起来更像同步。 ### ES8新特性 #### 函数参数默认值 函数参数可以设置默认值,当实参未提供时,将使用默认值。 #### 对象的属性简写 如果属性名和变量名相同,可以省略冒号和变量名。 #### 展开运算符(...)应用于对象 除了数组,展开运算符也可以用于合并对象。 ### ES9新特性 #### 对象 Rest/Spread 属性 与数组的Rest参数类似,对象现在也可以使用Rest属性收集剩余的属性。 #### Promise.prototype.finally Promise增加了一个`finally`方法,无论Promise结果如何,都会执行的回调。 ### ES10新特性 #### Object.fromEntries() 这个方法可以将一个键值对数组转换成对象。 #### String.prototype.trimStart() 和 String.prototype.trimEnd() 字符串新增了去除开头和结尾空白字符的方法。 #### Flat Array `Array.prototype.flat()`和`Array.prototype.flatMap()`用于将嵌套数组扁平化。 以上就是ES6到ES10的一些重要新特性,它们丰富了JavaScript的语法,提高了代码的可读性和维护性。