解构赋值与扩展运算符
题目1: 如何对对象和数组进行解构赋值?
答案: 解构赋值允许我们从数组或对象中提取值,并赋给不同的变量。
对象解构:
javascript
const { a, b } = { a: 1, b: 2 };
console.log(a, b); // 1 2
数组解构:
javascript
const [x, y] = [1, 2];
console.log(x, y); // 1 2
扩展: 解构赋值还可以用于嵌套结构、设置默认值等复杂场景。
题目2: 扩展运算符 ...
的用法和场景?
答案: 扩展运算符可以在函数调用、数组构造和对象字面量中使用,用于展开数组或对象。
常见用法:
- 函数调用:
Math.max(...[1, 2, 3])
- 数组构造:
[1, ...arr, 4]
- 对象字面量:
{ ...obj, newProp: 5 }
扩展: 扩展运算符还可以用于合并数组或对象、复制数组等场景。
题目3: 如何使用解构赋值交换两个变量的值?
答案:
javascript
let a = 1, b = 2;
[a, b] = [b, a];
console.log(a, b); // 2 1
扩展: 这种方法不需要使用临时变量,代码更简洁。
题目4: 如何使用解构赋值给函数参数设置默认值?
答案:
javascript
function greet({ name = 'Guest', greeting = 'Hello' } = {}) {
console.log(`${greeting}, ${name}!`);
}
greet(); // Hello, Guest!
greet({ name: 'John' }); // Hello, John!
greet({ greeting: 'Hi', name: 'Mary' }); // Hi, Mary!
扩展: 这种方法可以使函数参数更加灵活,同时提供默认值。
题目5: 如何使用扩展运算符合并对象?
答案:
javascript
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // { a: 1, b: 2, c: 3, d: 4 }
扩展: 如果有重复的属性,后面的对象会覆盖前面的对象的同名属性。