ES6中的Rest参数和默认参数

Rest参数

一个例子

  • 编写一个函数, 用来判断, 某个字符串中, 是否其他的字符串,
  • 如果第一参数以后的字符串, 都包含在第一参数中, 都包含在, 就返回true
  • 如果后面参数中的字符串, 有一个不在第一参数中, 返回false
  • containsAll("banana", "b", "nan") 将返回true,
  • containsAll("banana", "c", "nan") 将返回 false。
  var res = containsAll("banana", "a", "nan")
console.log(res) function containsAll(haystack) {
for (var i = 1; i < arguments.length; i++) {
var needle = arguments[i];
if (haystack.indexOf(needle) === -1) {
return false
}
}
return true
}

使用rest参数实现

  function containsAll(haystack, ...needles) {
for (var needle of needles) {
if (haystack.indexOf(needle) === -1) {
return false
}
}
return true
}
  • ...表示了needles是一个rest对象, 剩余的所有实参都放到needles这个参数中
  • 只能将函数的最后一个参数作为Rest参数
  • Rest参数之前的参数正常填充, 如果不够的话, Rest参数是一个[]

    绝对不会是undefiend

参数的默认值

可以直接在参数后面命名赋值默认值

  function testFunc(one="aaa", two="bbb") {
return `this is a ${one} and ${two}`
}
console.log(testFunc())

参数的默认值从左向右计算, 意味着, 后面的默认值可以调用前面的已经填充玩的参数

  function testFunc(one="aaa", two=(one === "aaa" ? "yes" : "no")) {
return `this is a ${one} and ${two}`
}
console.log(testFunc())

传递undeifend, 等同于没有传递改参数

  // 两周情况是完全相同的
function func(a=11, b) {
// ...
}
function func(a=11, b=undefined) {
// ...
}

兼容性

  • 属于ES6语法, 使用babel进行压缩处理即可.
  • 改天还应该写写关于处理ES6的兼容性的方法.

感谢作者

这是自己看到了不会的, 然后从这篇文章中学习了. 再次感谢作者的分享.

对了我是在伯乐在线上看到的这篇转载的文章

ES6中的Rest参数和默认参数的更多相关文章

  1. 深入浅出ES6(五):不定参数和默认参数

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例 ...

  2. 深入浅出ES6:不定参数和默认参数

    不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例如,String.prototype.concat方法就可以接受任意数量的字符串参数.ES6提供了一种编写可变参函数的新 ...

  3. python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)

    默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...

  4. Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

    Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic ...

  5. python 必选参数、默认参数、可变参数和、关键字参数

    转自:https://www.liaoxuefeng.com/wiki/897692888725344/897693568201440 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可 ...

  6. SE6 不定参数和默认参数详解和使用细节

    在SE5以前我们通常通过arguments类数组对象来引用不定形参,SE6则使用了一种叫做不定参数的写法,比起隐式的arguments要直观的多. 不定参数使用...参数名来指定一个不定参数,参数名指 ...

  7. Javascript变长参数和默认参数

    /* javascript 变长参数 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined * 实参多于形参: 剩下的实参可以通过 "实参对象"-argumen ...

  8. matlab 可变参数与默认参数设置

    1. 基本思路 矩阵矢量化编程,而不是循环和遍历: GPU 并行计算: 使用稀疏矩阵: 2. 实践 可变长输入参数,输出参数,需要解析(使用大括号进行索引): varargin varargout 函 ...

  9. python学习二十四天函数参数之默认参数

    函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...

随机推荐

  1. 基于DM642 RAW采集格式的视频驱动开发及应用

    摘 要:为解决C64X系列数字信号处理器(DSP)视频驱动不能应用于原始数据格式(RAW)采集格式的问题,设计了DM642和电耦合元件(CCD)高清传感器的数据传输接口,并分析.修改用于标准格式的视频 ...

  2. Mac OS用vmvare安装多节点kubernetes

    参考网址 https://kubernetes.io/docs/setup/ 1.安装vmvare 2.下载ubuntu镜像(可以不要界面,可以下载server版大约900M,否则下载desktop版 ...

  3. ExtJs4.2 开发问题总结

    1. 在开发treegrid中,store属性autoLoad:false没有作用,还会默认自动加载.目前解决办法在control下监听treegrid的afterrender,当加载完后,再调一次s ...

  4. quilt

    1 什么是quilt quilt是一个patch管理工具,特别适合于对多个patch进行管理. quilt是基于gnu patch和diff的. 2 使用quilt创建一个patch 第一步,quil ...

  5. SyntaxError:Strict mode does not allow function declaration in a lexically nested statement.

    问题描述   使用react-native init创建了一个新项目,在package.json中使用的react-native的版本如下: "dependencies": { & ...

  6. MySQL安装、安装时未提示输入密码、如何修改密码小结

    http://blog.csdn.net/fr555wlj/article/details/54971412

  7. table 中的thead tbody

    通过thead 下的tr 设置样式以及 tbody 下的 tr 设置样式 避免冲突 <table> <thead> <tr> <td> </td& ...

  8. Spring boot 使用Junt

    //@RunWith:启动器,SpringJUnit4ClassRunner:Spring整合JUnit4 //@SpringBootTest获取启动类,相当于@Contextconfiguartio ...

  9. JAVA MAIL基本功能

    1. [代码][Java]代码package emailrobot; import java.io.*;import java.text.*;import java.util.*;import jav ...

  10. nginx开发_调试日志

    接口列表 核心文件ngx_log.h 主要接口如下: ngx_log_error(level, log, err, fmt, ...) ngx_log_debug(level, log, err, f ...