ES6中的Rest参数和默认参数
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的兼容性的方法.
感谢作者
这是自己看到了不会的, 然后从这篇文章中学习了. 再次感谢作者的分享.
对了我是在伯乐在线上看到的这篇转载的文章
- 原文出处: https://hacks.mozilla.org/2015/05/es6-in-depth-rest-parameters-and-defaults/
- 译文出处: http://bubkoo.com/2015/06/27/es6-in-depth-rest-parameters-and-defaults/
ES6中的Rest参数和默认参数的更多相关文章
- 深入浅出ES6(五):不定参数和默认参数
作者 Jason Orendorff github主页 https://github.com/jorendorff 不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例 ...
- 深入浅出ES6:不定参数和默认参数
不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例如,String.prototype.concat方法就可以接受任意数量的字符串参数.ES6提供了一种编写可变参函数的新 ...
- python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)
默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...
- Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数
Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic ...
- python 必选参数、默认参数、可变参数和、关键字参数
转自:https://www.liaoxuefeng.com/wiki/897692888725344/897693568201440 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可 ...
- SE6 不定参数和默认参数详解和使用细节
在SE5以前我们通常通过arguments类数组对象来引用不定形参,SE6则使用了一种叫做不定参数的写法,比起隐式的arguments要直观的多. 不定参数使用...参数名来指定一个不定参数,参数名指 ...
- Javascript变长参数和默认参数
/* javascript 变长参数 * 实参少于形参: 剩下的参数如果没有默认值,将解析为undefined * 实参多于形参: 剩下的实参可以通过 "实参对象"-argumen ...
- matlab 可变参数与默认参数设置
1. 基本思路 矩阵矢量化编程,而不是循环和遍历: GPU 并行计算: 使用稀疏矩阵: 2. 实践 可变长输入参数,输出参数,需要解析(使用大括号进行索引): varargin varargout 函 ...
- python学习二十四天函数参数之默认参数
函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...
随机推荐
- Python开发【2.2 异常处理】
1.Python常见异常类型: Exception 常规错误的基类 AttributeError 对象没有这个属性 IOError 输入/输出操作失败 IndexError 序列中没有此索引(inde ...
- HashMap存入大量数据是否要预定义存储空间
按说HashMap的负载极限为0.75,可是,测试程序并看不出这个结果.待探讨 测试程序如下: 根据结果看不出来预定义有什么影响. public class test { public static ...
- es 300G 数据删除 执行计划 curl REST 操作
es 300G 数据删除 [es union_2017执行计划] [测试执行环境]线上D服务器[测试用例]get:curl -XGET ES:9200/_cat/indices?v post:curl ...
- Python 中的字节与字节数组
Python 中的字节与字节数组 - Python - 伯乐在线 http://python.jobbole.com/84839/
- 获取Android系统应用信息
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- vfork函数的使用【学习笔记】
#include "apue.h" ; int main(void) { int var; pid_t pid; ; printf("before vfork\r\n&q ...
- bzoj4406: [Wc2016]论战捆竹竿&&uoj#172. 【WC2016】论战捆竹竿
第二次在bzoj跑进前十竟然是因为在UOJ卡常致死 首先这个题其实就是一个无限背包 一般做法是同余最短路,就是bzoj2118: 墨墨的等式可以拿到30分的好成绩 背包是个卷积就分治FFT优化那么下面 ...
- AndroidStudio——Android SDK
前言 安卓的SDK包,跨过长城下载好的,分享出来一下~ Android Studio版本 | 3.4.1 下载地址 微云下载地址 | 链接:https://share.weiyun.com/5rm6l ...
- chan
第一单元:分型.笔.线段 ?1 分型 一.分型.笔和线段所属范畴 缠师在<教你炒股票72:本ID已有课程的再梳理>中对缠论做过这样的说明“本ID的理论,本质上分两部分,一是形态学,二是动 ...
- 启动tomcat时,经常遇到的问题 8080 端口被占用
启动tomcat失败时,弹出的窗口如上,说明8080被某个进程占用了 需要把占用8080端口的进程给kill掉 Win+R 输入运行cmd 打开命令提示符cmd.exe netstat -ano|fi ...