ES6中的Rest参数和默认参数
2017-09-18 15:47
351 查看
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中的解构赋值、扩展运算符和rest参数使用详解
- ES6(六: 函数扩展)(默认值,rest参数,扩展运算符)
- ES6 rest参数和扩展运算符
- es6 -- rest 参数
- 深入浅出ES6(五):不定参数和默认参数
- ES6-rest参数和扩展运算符
- 在es6中,对rest参数和扩展运算符的理解(待更新)
- ES6-rest参数和扩展运算符
- ES6-函数的扩展-rest参数
- ES6中的rest参数与扩展运算符详解
- ES6------rest参数
- ES6 rest参数和扩展运算符
- JavaScript:实例讲解使用ES6中默认参数和剩余参数时的注意事项
- ECMAScript6(ES6)标准之函数扩展特性箭头函数、Rest参数及展开操作符
- [ES6] Array -- Destructuring and Rest Parameters && for ..of && Arrat.find()
- ES6 函数参数默认值 default
- RestTemplate的几种方法的参数
- 【JavaScript】函数中的arguments对象与Rest参数
- 笔记:ES6新特性-参数收集和数组展开