ES6的扩展操作符

news/2024/7/10 22:54:48 标签: ES6, JavaScript, 扩展操作符

ES6中的扩展操作符实际上与rest参数非常相似。前者是...,后者则是...+变量名

那它们主要的区别我个人认为主要是两个:

  1. rest参数使用在函数的参数定义时扩展操作符使用在函数调用时
function foo(...items){ //这里的...items就是rest参数
    console.log(items);
}

console.log(...[1,2,3,4,5]);    //这里的...就是扩展操作符
  1. 扩展操作符可以理解为rest参数的逆操作

为什么这么说呢?从它们的作用就可以窥见一二。rest参数是将所有“多余”的参数都放进数组。例如

function foo(x, ...items){
    console.log(x + '\n');
    console.log(items);
}

foo(1,2,3,4,5,6);   
/*
1
[2,3,4,5,6]
*/

可以看出1之后的“多余”的2,3,4,5,6都被放进了一个数组并赋值给了items变量。

扩展操作符则是将数组转换成由逗号分隔的参数序列。例如,

let arr = [];
let nums = [1,2,3,4,5,6,7,8,9];

arr.push(...nums);

console.log(arr);   //[1,2,3,4,5,6,7,8,9]

若是给arr数组的push方法直接传入nums数组,那么输出的结果将会是一个二维数组。


在函数调用中使用扩展操作符将可以实现类似于解构赋值的效果。注意,仅仅只是类似。 例如,

function pow(x, y){
    return x ** y;
}

let nums = [2,3];

console.log(pow(...nums));  //8

这个例子中nums中的23都分别赋值给了xy


http://www.niftyadmin.cn/n/1700940.html

相关文章

Macports 解决某些包同时依赖不同版本库的办法

2019独角兽企业重金招聘Python工程师标准>>> 问题很奇葩: 最初是想在 CLISP 上用 portableaserve,于是用 quicklisp 安装 (ql:quickload :aserve)结果出现各种问题,包括修改代码什么的,具体内容如下&#x…

词法分析阶段的错误处理

文章目录词法分析阶段可检测错误的类型:词法错误检测:错误处理词法分析阶段可检测错误的类型: 单词拼写错误: 例:int i 0x3G(16进制数表示错误)、float j 1.05e(指数表示错误) 非法字符:例如~、等 词法…

socket传照片java服务器python客户端

Java服务器 package Socket;import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;public class SS {public static void main(String[] args) throws Exception{ServerSocket ss new …

急躁

2019独角兽企业重金招聘Python工程师标准>>> 写代码,过于急躁不行。最近写的比较开心,每天抱着笔记本,比抱着老婆的时间都长(恨不得二十四小时坐在电脑面前写),可见我是多么的急功近利啊&#x…

python读取数据文件夹_在Python中按路径读取数据文件的几种方式

我们知道,写Python代码的时候,如果一个包(package)里面的一个模块要导入另一个模块,那么我们可以使用相对导入: 假设当前代码结构如下图所示: img 其中test_1是一个包,在util.py里面…

Electron入门—Hello world

不论是学习语言亦或是各种框架,最开始上手都必然是"Hello World"类型的简单编程。那么我作为一个Electron的初学者自然也不例外。 Electron应用从开发的角度来看可以视作是一个Node.js应用。所以一个基本的Electron应用的文件目录应该会是下面这个样子的…

numpy whl_如何安装NumPy库

1 NumPy 简介NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travi…

cuda和cudnn下载地址

https://developer.nvidia.com/cuda-downloads? https://developer.nvidia.com/rdp/cudnn-download