JavaScript语言的展开(Spread)语法

1.展开可迭代对象

1.1用于变量赋值

let 变量名 = [...可迭代对象];
//字符串
let a1 = "123";
let a2 = [...a1];  
console.log(a2);  // [1, 2, 3]
//数组
//新数组中的元素全部由老数组中的元素组成。
let a1 = [1, 2, 3];
let a2 = [...a1];  
console.log(a2);  // [1, 2, 3]

//新数组中的部分元素由老数组中的元素组成。
//新老数组无重复元素
let a1 = [1, 2, 3];
let a2 = [0, ...a1, 4, 5];  
console.log(a2);  // [0, 1, 2, 3, 4, 5]
//新老数组有重复元素,不会去重,仅此复制而已。
let a1 = [1, 2, 3];
let a2 = [1, ...a1, 2, 3];  
console.log(a2);  // [1, 1, 2, 3, 2, 3]
//映射
let a1 = new Map([[1, "one"], [2, "two"], [3, "three"]]);
let a2 = [...a1];  
console.log(a2);  // [[1, "one"], [2, "two"], [3, "three"]]
//集合
let a1 = new Set([1, 2, 3]);
let a2 = [...a1];  
console.log(a2);  // [1, 2, 3]

1.2用于函数实参

具体参考“用于变量赋值”章节。

function f(a, b) {
  console.log(a, b);
}

let arr = [1, 2];
f(...arr);  // 1 2

2.展开对象字面量

2.1用于变量赋值

let 变量名 = { ...对象字面量 };
//新对象中的属性全部由老对象中的属性组成。
let o1 = { a: 1, b: 2 };
let o2 = { ...o1 };
console.log(o2);  // { a: 1, b: 2 }

//新对象中的部分属性由老对象中的属性组成。
//新老对象无同名属性
let o1 = { a: 1, b: 2 };
let o2 = { ...o1, c: 3 };
console.log(o2);  // { a: 1, b: 2, c: 3 }
//新老对象有同名属性,后面的属性会覆盖前面的属性。
let o1 = { a: 1, b: 2 };
let o2 = { ...o1, a: 3 };
console.log(o2);  // { a: 3, b: 2 }
let o1 = { a: 1, b: 2 };
let o2 = { a: 3, ...o1 };
console.log(o2);  // { a: 1, b: 2 }

2.2用于函数实参

JavaScript 语言不支持用于函数实参。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/javascriptexp/36651.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2025年4月3日 16:40
下一篇 2025年4月3日 16:49

相关推荐

  • JavaScript语言的可计算名

    可计算名语法用于使用表达式的返回值作为成员名。 支持类的成员:静态字段、静态访问器属性、静态方法、实例字段、实例访问器属性、实例方法。 支持对象字面量的成员:数据属性、访问器属性、方法。 方括号 [] 内可以为任何 JavaScript 表达式,表达式的返回值的类型只可以为 字符串类型(包括空字符串) 或者 符号类型。…

    JavaScript经验 2025年4月3日
    0600
  • innerHTML、outerHTML、textContent、innerText、outerText实例属性的区别

    1.innerHTML和outerHTML区别 类 实例属性 区别 Element innerHTML 目标元素标签之间的 HTML 代码,不包括目标元素标签本身。 Element outerHTML 目标元素标签之间的 HTML 代码,包括目标元素标签本身。 2.textContent和innerText区别 类 实…

    JavaScript经验 2023年10月15日
    05490
  • JavaScript语言的解构(Destructuring)语法

    可迭代对象解构是按位置的,而对象字面量解构是按命名的。 注意:解构语法是并行的。 1.可迭代对象解构 1.1用于变量赋值 左侧的变量还支持占位语法。 注意:左侧不是稀疏数组语法,是占位语法。 1.2用于函数形参 具体参考“用于变量赋值”章节。 2.对象字面量解构 2.1用于变量赋值 2.2用于函数形参 具体参考“用于变…

    JavaScript经验 2025年4月3日
    0650

发表回复

登录后才能评论