Skip to content

解构赋值与扩展运算符

题目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: 扩展运算符 ... 的用法和场景?

答案: 扩展运算符可以在函数调用、数组构造和对象字面量中使用,用于展开数组或对象。

常见用法:

  1. 函数调用:Math.max(...[1, 2, 3])
  2. 数组构造:[1, ...arr, 4]
  3. 对象字面量:{ ...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 }

扩展: 如果有重复的属性,后面的对象会覆盖前面的对象的同名属性。