Appearance
三、解构赋值
解构赋值是 ES6 引入的一种新语法,用于从数组或对象中提取值并赋给变量。它可以使代码更简洁易读。
数组解构
基本用法
javascript
const [a, b, c] = [1, 2, 3];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3跳过元素
javascript
const [d, , f] = [4, 5, 6];
console.log(d); // 4
console.log(f); // 6剩余参数
javascript
const [g, ...rest] = [7, 8, 9, 10];
console.log(g); // 7
console.log(rest); // [8, 9, 10]默认值
javascript
const [h, i = 10] = [11];
console.log(h); // 11
console.log(i); // 10对象解构
基本用法
javascript
const { name, age } = { name: 'John', age: 30 };
console.log(name); // John
console.log(age); // 30重命名
javascript
const { name: firstName, age: years } = { name: 'John', age: 30 };
console.log(firstName); // John
console.log(years); // 30默认值
javascript
const { name, age = 25 } = { name: 'John' };
console.log(name); // John
console.log(age); // 25嵌套对象解构
javascript
const person = {
name: 'John',
address: {
city: 'New York',
country: 'USA'
}
};
const { name, address: { city, country } } = person;
console.log(name); // John
console.log(city); // New York
console.log(country); // USA字符串解构
javascript
const str = 'hello';
const [s1, s2, s3, s4, s5] = str;
console.log(s1); // h
console.log(s2); // e
console.log(s3); // l
console.log(s4); // l
console.log(s5); // o函数参数解构
对象参数解构
javascript
function greet({ name, age }) {
console.log(`Hello, ${name}! You are ${age} years old.`);
}
greet({ name: 'John', age: 30 }); // Hello, John! You are 30 years old.数组参数解构
javascript
function sum([a, b]) {
return a + b;
}
console.log(sum([1, 2])); // 3混合使用
javascript
function config({ host, port = 3000, protocols = ['http'] }) {
console.log(`Host: ${host}`);
console.log(`Port: ${port}`);
console.log(`Protocols: ${protocols.join(', ')}`);
}
config({ host: 'localhost', protocols: ['http', 'https'] });
// Host: localhost
// Port: 3000
// Protocols: http, https实战场景:快速获取接口数据
javascript
// 模拟接口返回数据
const apiResponse = {
code: 200,
data: {
user: {
id: 1,
name: 'John',
email: 'john@example.com'
},
posts: [
{ id: 1, title: 'Post 1' },
{ id: 2, title: 'Post 2' }
]
},
message: 'Success'
};
// 使用解构赋值快速获取数据
const {
code,
data: { user, posts },
message
} = apiResponse;
console.log(code); // 200
console.log(user.name); // John
console.log(posts.length); // 2
console.log(message); // Success解构赋值的优势
- 代码简洁:减少了重复的变量声明和赋值代码
- 可读性高:一眼就能看出变量与数据源的对应关系
- 默认值处理:可以轻松设置默认值,避免undefined
- 参数提取:方便从复杂对象中提取需要的属性
通过本章节的学习,你已经掌握了解构赋值的基本用法和实战场景。解构赋值是 ES6 中非常实用的语法特性,可以大大简化代码,提高开发效率。
