三点运算符
含义是将数组转化为用逗号隔开的参数序列。
let arr1 = [3, 4, 5]
let arr2 = [1, 2, ...arr1, 6]
console.log(arr2)
替代数组的apply方法
由于出现了三点运算符,所以不需要使用apply方法将数组转换为函数的参数
function fun(x,y,z){
}
let args = [0,1,2];
fun(...args);
应用
合并数组
三点运算符提供了数组合并的新方法
let arr1 = [1,2,3]
let arr2 = [4,5,6]
console.log(arr1.concat(arr2));
console.log([...arr1,...arr2]);
arr1.push(...arr2)
console.log(arr1);
// 输出均为 [1, 2, 3, 4, 5, 6]
解构赋值
let [first,...rest] = [1,2,3,4];
console.log(first);//1
console.log(rest);//[2,3,4]
js函数只能返回一个返回值,使用三点运算符返回多个返回值
转换数组
任何实现了Iterator接口的对象,都可以利用三点运算符
将字符串转换为数组
优点:可以正确识别32位的Unicode字符
console.log([...'hello']);
// ["h", "e", "l", "l", "o"]
let str = 'x\uD83D\uDE80Y'
let arr1 = Array.from(str);
let arr2 = [...'x\uD83D\uDE80Y'];
console.log(arr1);
// ["x", "🚀", "Y"]
console.log(arr2);
// ["x", "🚀", "Y"]
console.log(str.length);//4
console.log([...str].length);//3
// js会把32为是Unicode字符识别为2个字符,使用扩展运算符可以正确返回结果
// Unicode
// 统一码,也叫万国码、单一码
// 是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
// Unicode 是为了解决传统的字符编码方案的局限而产生的,
// 它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
// 以满足跨语言、跨平台进行文本转换、处理的要求。
// 就是将世界上所有的文字用2个字节统一进行编码。
// 2个字节就已经足够容纳世界上所有的语言的大部分文字了。