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 ...
随机推荐
- Golang-interface(二 接口与nil)
github: https://github.com/ZhangzheBJUT/blog/blob/master/nil.md 一 接口与nil 前面解说了go语言中接口的基本用法,以下将说一说nil ...
- 细数AutoLayout以来UIView和UIViewController新增的相关API
本文转载至 http://www.itjhwd.com/autolayout-uiview-uiviewcontroller-api/ 细数AutoLayout以来UIView和UIViewContr ...
- Mac版的idea部分按钮失效的解决方案
问题描述:调整了一下idea中jdk的路径,之后idea就无法打开新项目了,最好发现idea中的顶部菜单全部失效 解决过程: 1.把idea的jdk的路径调回去,无效 2.重启idea,无效 3.重启 ...
- linux内存操作--ioremap和mmap
最近在做视频输出相关的东西,对于预留给framebuffer的内存使用不是很清楚,现在找到一些资料整理一下,以备使用.if (想看使用方法) goto 使用方法: 对于一个系统来讲,会有很多的外 ...
- POJ2251 Dungeon Master —— BFS
题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total S ...
- Javascript中两种最通用的定义类的方法
在Javascript中,一切都是对象,包括函数.在Javascript中并没有真正的类,不能像C#,PHP等语言中用 class xxx来定义.但Javascript中提供了一种折中的方案:把对象定 ...
- 一步一步学Silverlight 2系列(8):使用样式封装控件观感
述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- dba操作之archivelog清理
下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的: crosscheck archivelog all; ...
- codeforces 691F F. Couple Cover(组合计数)
题目链接: F. Couple Cover time limit per test 3 seconds memory limit per test 512 megabytes input standa ...
- SpringMVC实现ajax文件上传
SpringMVC实现文件上传,直接上代码: 后台代码: 01 @RequestMapping(value = "/uploadApk") 02 @ResponseBody 03 ...