对象展开符的作用与原理

对象展开符

let obj = { a: { b: 1 } };
let { ...x } = obj;

x = obj有什么区别

对象展开符(…x)会创建一个新对象,并将 obj 对象中可枚举的属性复制到 x 对象中
修改 x 对象不会影响原始 obj 对象
当 obj 是 null 或 undefined 时,使用对象展开符会引发类型错误(TypeError),而直接使用 x = obj 则不会引发类型错误。
当使用对象展开符时,可以通过在大括号内指定新的属性名称来从 obj 对象中选择性地复制属性。而直接给 x 赋值则不能实现此种选择性复制。
如果想要创建一个新对象,并将 obj 对象中的所有属性复制到其中,使用对象展开符可以实现此目的。如果只是想简单地将 obj 对象赋值给另一个变量,则使用 x = obj 更为简单和适当。