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的兼容性的方法.

感谢作者

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

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

最新文章

  1. atexit函数
  2. 关于Android开发手机连接不上电脑问题解决方案
  3. vpn与局域网冲突解决方案
  4. SSH和SFTP简介
  5. 浅谈Android手机木马手工查杀
  6. 那些年困扰我们的委托(C#)
  7. 关于const
  8. iOS9开发之新增通知行为详解
  9. [转载]在C#中使用官方驱动操作MongoDB
  10. 高频交易:Solarflare组建超低延迟网络
  11. express 安装和运行
  12. 连接虚拟机mysql无法访问,报错编号1130的解决方法
  13. mycat入门_介绍与安装
  14. 最棒的 JavaScript 学习指南(2018版)
  15. css3 的calc
  16. Sentinel统计线程,QPS,RT的方式
  17. FortiGate端口聚合配置
  18. python使用变量
  19. 部署redis5.0.3
  20. elementui常用知识点总结

热门文章

  1. 【献给CWNU的师弟】Web篇
  2. MapReduce简述、工作流程及新旧API对照
  3. 【读书笔记】iOS-GCD-用法
  4. app直播原理
  5. 正则表达式pattern的匹配格式
  6. VC FTP服务器程序分析(四)
  7. jquery和CSS3带倒影的3D万花筒旋转动画特效效果演示
  8. linux地址映射1、2、3(⭐⭐⭐)
  9. I.MX6 2014 u-boot 测试修改
  10. linux中用无名管道进行文件的读写