好的,这里是 ES6 的主要知识点和相关示例,所有示例都带有详细的注释。
1. let 和 const
let
和 const
是用于声明变量的新关键字,具有块级作用域。
// 使用 let 声明变量
let x = 10;
if (true) {
let x = 20;
console.log(x); // 输出 20
}
console.log(x); // 输出 10
// 使用 const 声明常量
const y = 30;
// y = 40; // 会抛出错误
console.log(y); // 输出 30
2. 箭头函数
箭头函数提供了更简洁的函数声明方式,并且没有自己的 this
绑定。
// 普通函数
function add(a, b) {
return a + b;
}
// 箭头函数
const addArrow = (a, b) => a + b;
console.log(add(2, 3)); // 输出 5
console.log(addArrow(2, 3)); // 输出 5
3. 模板字符串
模板字符串允许在字符串中嵌入表达式,使用反引号(`)包围。
const name = 'Alice';
const age = 25;
// 使用模板字符串
const greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting); // 输出 "Hello, my name is Alice and I am 25 years old."
4. 解构赋值
解构赋值允许从数组或对象中提取值,并赋给变量。
// 数组解构赋值
const [first, second] = [1, 2, 3];
console.log(first); // 输出 1
console.log(second); // 输出 2
// 对象解构赋值
const person = {
name: 'Bob',
age: 30
};
const { name, age } = person;
console.log(name); // 输出 "Bob"
console.log(age); // 输出 30
5. 默认参数
可以为函数参数提供默认值。
// 带有默认参数的函数
function greet(name = 'Guest') {
return `Hello, ${name}!`;
}
console.log(greet()); // 输出 "Hello, Guest!"
console.log(greet('Alice')); // 输出 "Hello, Alice!"
6. 展开运算符
展开运算符(…)可以展开数组或对象。
// 数组展开
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5, 6];
console.log(arr2); // 输出 [1, 2, 3, 4, 5, 6]
// 对象展开
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // 输出 { a: 1, b: 2, c: 3 }
7. 对象属性简写
当对象属性名和变量名相同时,可以使用简写语法。
const x = 10;
const y = 20;
// 使用对象属性简写
const point = { x, y };
console.log(point); // 输出 { x: 10, y: 20 }
8. 类和继承
ES6 引入了类和继承,使面向对象编程更加简洁。
// 定义一个类
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
// 定义一个继承自 Animal 的类
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Rex');
dog.speak(); // 输出 "Rex barks."
9. 模块化
ES6 引入了模块化,可以使用 import
和 export
导入和导出模块。
// 在 math.js 文件中导出函数
export function add(a, b) {
return a + b;
}
// 在 main.js 文件中导入函数
import { add } from './math.js';
console.log(add(2, 3)); // 输出 5
10. Promise
Promise 是异步编程的一种解决方案,用于处理异步操作。
// 创建一个 Promise
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved');
}, 2000);
});
// 使用 then 方法处理 Promise 的结果
myPromise.then((message) => {
console.log(message); // 输出 "Promise resolved"
});
11. 生成器函数
生成器函数使用 function*
语法,可以通过 yield
关键字逐步返回值。
// 定义一个生成器函数
function* generatorFunction() {
yield 1;
yield 2;
yield 3;
}
// 创建生成器对象
const generator = generatorFunction();
// 使用 next() 方法获取生成器的值
console.log(generator.next().value); // 输出 1
console.log(generator.next().value); // 输出 2
console.log(generator.next().value); // 输出 3
console.log(generator.next().value); // 输出 undefined
12. Symbol
Symbol 是一种新的原始数据类型,用于创建唯一的标识符。
// 创建一个 Symbol
const mySymbol = Symbol('description');
console.log(mySymbol); // 输出 Symbol(description)
// 使用 Symbol 作为对象属性的键
const obj = {
[mySymbol]: 'value'
};
console.log(obj[mySymbol]); // 输出 "value"
13. Set 和 Map
ES6 引入了新的集合类型:Set 和 Map。
// Set 示例
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // Set 中的元素是唯一的
console.log(mySet.has(1)); // 输出 true
console.log(mySet.has(3)); // 输出 false
console.log(mySet.size); // 输出 2
// Map 示例
const myMap = new Map();
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
console.log(myMap.get('key1')); // 输出 "value1"
console.log(myMap.has('key2')); // 输出 true
console.log(myMap.size); // 输出 2
14. 模板标签函数
模板标签函数可以用于处理模板字符串。
// 定义一个模板标签函数
function tag(strings, ...values) {
return strings.reduce((result, string, i) => {
return result + string + (values[i] || '');
}, '');
}
const name = 'Alice';
const age = 25;
// 使用模板标签函数
const message = tag`Hello, my name is ${name} and I am ${age} years old.`;
console.log(message); // 输出 "Hello, my name is Alice and I am 25 years old."
15. 默认参数展开运算符
默认参数展开运算符(…)可以用于将参数展开成数组。
// 使用展开运算符处理函数参数
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出 10
这些示例涵盖了 ES6 中的主要特性和语法,帮助你更好地理解和应用 ES6。每个示例都附带了详细的注释,以便于理解。