专栏首页大前端开发ES6特性之:Rest参数

ES6特性之:Rest参数

Rest参数,也称可变参数。它为函数提供了可接受任意数量的参数的能力。

其实在JavaScript中,通过使用arguments对象也能实现这种可变参数的能力,但是,arguments对象本身有点奇怪,它看起来像一个数组,但其实它不是(是个Iterable的对象)。

ES6中为了语法语义更清晰,专门定义了Rest参数语法来实现这种可变参数的功能。

function format(template, ...values) {
    var result = template;

    for (var i = 0; i < values.length; i++) {
        result = result.replace(new RegExp("\\{" + i + "\\}", "g"), values[i]);
    }

    return result;
}

format("Name: {0}, Age: {1}", "kevin", "18");
// 结果:Name: kevin, Age: 18

format("[{0}] {1} - {2}", "error", "2017-01-01 12:22", "network error");
// 结果:[error] 2017-01-01 12:22 - network error

Rest参数是一个纯粹的数组

function test(a, b, ...others) {
  console.log(Array.isArray(others)); // true
}

Rest参数必须放在参数列表中的最后一个位置

function test(...rest, more) {} // 错误

function test(more, ...rest) {} // 正确
function test(...rest) {} // 正确

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ES6特性之:解构

    解构(destructuring assignment), 也称解构赋值,这种语法可以方便的将数组元素或对象属性赋成新的变量。

    一斤代码
  • 开源翻译中文版《深度学习(Deep Learning)》

    深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

    一斤代码
  • 由一道关于变量作用域的面试题,来加深对var和let的理解

    最近,有一道JavaScript面试题挺流行的,很多朋友去面试的时候都遇到了。这道题目大致是这个样子的:

    一斤代码
  • 异名解题:7. 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2³¹, ...

    异名
  • golang slice N选3 组合

    package main import( "fmt" ) func main(){ var a = []int32{1,2,3,...

    李海彬
  • [Leetcode][python]Simplify Path

    化简Unix系统下一个文件的绝对路径。 输入: path = “/a/./b/../../c/”

    后端技术漫谈
  • 【SAP FICO系列】SAP FICO总帐模块外币评估流程

    企业只要有外币业务存在,在期末是一定要进行评估。在K/3中称之为调汇,其实评估的概念比调汇更广泛。对外币进行评估(调汇)的目的是什么?资产负债表、利润表是背后隐...

    matinal
  • 数值的整数次方

  • 在Ubuntu18.04 Server中安装jetty,非apt版

    本教程安装环境为 1、Ubuntu18.04 Server系统 2、JDK1.8 这里提一下,在Ubuntu中是可以sudo apt-get instal...

    cn華少
  • flink 有状态udf 引起血案一

    最近在做一个画像的任务,sql实现的,其中有一个udf,会做很多事情,包括将从redis读出历史值加权,并将中间结果和加权后的结果更新到redis。

    Spark学习技巧

扫码关注云+社区

领取腾讯云代金券