Skip to content

输出什么?

Posted on:2024年8月3日 at 21:05
const person = {
  name: "Lydia",
  age: 21,
};

const changeAge = (x = { ...person }) => (x.age += 1);
const changeAgeAndName = (x = { ...person }) => {
  x.age += 1;
  x.name = "Sarah";
};

changeAge(person);
changeAgeAndName();

console.log(person);

函数 changeAge 和函数 changeAgeAndName 有着不同的参数,定义一个 生成的对象 { ...person }。这个对象有着所有 person 对象 中 k/v 值的副本。 首项, 我们调用 changeAge 函数并传递 person 对象作为它的参数。这个函数对 age 属性进行加一操作。person 现在是 { name: "Lydia", age: 22 }。 然后,我们调用函数 changeAgeAndName ,然而我们没有传递参数。取而代之,x 的值等价 new 生成的对象: { ...person }。因为它是一个新生成的对象,它并不会对对象 person 造成任何副作用。person 仍然等价于 { name: "Lydia", age: 22 }

原文转自:https://fe.ecool.fun/topic/7ce6573e-b10b-4962-a732-aec1ca3207a1