1. 变量声明
• let: 块级作用域变量,不可重复声明。
• const: 块级作用域常量,不可重复声明,值不可变(对象属性可变)。
2. 箭头函数
• 语法:`(param1, param2) => { ... }`。
• 特点:
• 简化函数定义。
• 没有自己的 `this`,继承父级作用域的 `this`。
• 不能作为构造函数使用。
3. **模板字符串**
• 语法:`` `Hello, ${name}!` ``。
• 特点:
• 支持多行字符串。
• 支持嵌入变量或表达式。
4. **解构赋值**
• 数组解构:`let [a, b] = [1, 2];`。
• 对象解构:`let { name, age } = { name: "Alice", age: 20 };`。
• 特点:简化变量赋值。
5. **默认参数**
• 语法:`function greet(name = "Guest") { ... }`。
• 特点:为函数参数提供默认值。
6. **扩展运算符**
• 语法:`...`。
• 用途:
• 展开数组或对象:`let arr = [...arr1, ...arr2];`。
• 收集剩余参数:`function foo(a, b, ...rest) { ... }`。
7. **类(Class)**
• 语法:
```javascript
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, ${this.name}!`);
}
}
• 特点:
• 支持构造函数、方法、继承。
• 语法糖,底层基于原型链。
8. 模块化
• export: 导出模块。
• 默认导出:`export default MyComponent;`。
• 命名导出:`export { foo, bar };`。
• import: 导入模块。
• 默认导入:`import MyComponent from './MyComponent';`。
• 命名导入:`import { foo, bar } from './module';`。
9. Promise
• 语法:
javascript
let promise = new Promise((resolve, reject) => {
if (success) resolve(value);
else reject(error);
});
• 特点:
• 用于处理异步操作。
• 支持链式调用:`promise.then().catch()`。
10. 迭代器与生成器
• 迭代器(Iterator): 实现 `Symbol.iterator` 方法的对象。
• 生成器(Generator): 语法:`function* gen() { yield 1; }`。
• 特点:惰性求值,支持暂停和恢复。
11. Set 和 Map
• Set: 不重复的值集合。
• 语法:`let set = new Set([1, 2, 3]);`。
• Map: 键值对集合,键可以是任意类型。
• 语法:`let map = new Map([['key', 'value']]);`。
12. **Symbol**
• 语法:`let sym = Symbol('description');`。
• 特点:
• 唯一的、不可变的值。
• 常用于对象属性的唯一标识符。
13. Proxy
• 语法:
javascript
let proxy = new Proxy(target, {
get(target, prop) { ... },
set(target, prop, value) { ... }
});
• 特点:用于拦截和自定义对象操作。
14. Reflect
• 提供一组操作对象的方法,如 `Reflect.get()`、`Reflect.set()`。
• 特点:与 `Proxy` 配合使用,增强对象操作。
15. 新的数据类型
• BigInt: 表示大整数。
• 语法:`let bigNum = 9007199254740991n;`。
• Symbol: 唯一的值。
16. 新的数组方法
• Array.from(): 将类数组对象转换为数组。
• Array.of(): 创建数组。
• find(): 查找符合条件的元素。
• findIndex(): 查找符合条件的元素的索引。
• includes(): 判断数组是否包含某个值。
17. **对象扩展**
• 属性简写:`let obj = { name };`。
• 方法简写:`let obj = { greet() { ... } };`。
• 计算属性名:`let obj = { [key]: value };`。
18. 异步编程
• async/await: 语法糖,简化 Promise 的使用。
• 语法:
javascript
async function foo() {
let result = await somePromise();
}
19. **字符串扩展**
• **`startsWith()`**: 判断字符串是否以指定字符开头。
• **`endsWith()`**: 判断字符串是否以指定字符结尾。
• **`includes()`**: 判断字符串是否包含指定字符。
• **`repeat()`**: 重复字符串。
20. **数值扩展**
• **`Number.isFinite()`**: 判断是否为有限数。
• **`Number.isNaN()`**: 判断是否为 `NaN`。
• **`Number.isInteger()`**: 判断是否为整数。