1. 引用赋值 =
将变量指向新的引用/地址空间;多个变量引用|指向同一块内存
变量对内存数据的修改会影响到另外一个变量
变量重新赋值时,会丢失原来的内存 - 指向变了
let arr0 = [1, 2];
let arr1 = arr0;
arr1.push(3)
arr0 = [1, 3];//指向别的内存
2. 解构赋值 []
一次性把数组元素赋值给多个变量
let [a, b] = [1, 3];
指定位置赋值 - 获取最后一个
let [, , , , a] = [1, 2, 3, 4, 5];
//a=5
交换赋值
[a, b] = [b, a];
默认赋值 - 位置要匹配
let [name, age = 18, gender] = ['gl', , 'male']
let [name, age = 18] = ['gl']
3. 扩展运算符 spread operator ...
将数组各项展开,特别适合数组复制
let a = [1, 2, 3];
let b = [...a];
...剩余赋值 - 第1个给a,其它给rest;剩余属性必须是模式中的最后一个,并且不能有尾随逗号
let [a, ...rest] = [1, 2, 3, 4, 5]
//a=1
//rest=[2,3,4,5]
1. 基本数据类型
let a0 = [1, 2, 3]
// 直接赋值;会彼此影响
let a1 = a0
a0.push(4)
// 解构赋值:相当于重新赋值;不会彼此影响
let a2 = [...a0]
a2.push(5)
console.log(a0, a1, a2);
2. 引用数据类型
结论同上
let obj0 = [{ id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '王五' }]
console.log(obj0);
let obj1 = obj0
obj0.push({ id: 4, name: '赵六' })
let obj2 = [...obj0]
obj0.push({ id: 5, name: '老郭' })
obj2.push({ id: 5, name: '孙七' })
console.log(obj0, obj1, obj2);