您的位置:首页 > 其它

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: