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

    感谢作者

    这是自己看到了不会的, 然后从这篇文章中学习了. 再次感谢作者的分享.
    对了我是在伯乐在线上看到的这篇转载的文章

  • 相关阅读:
    史上最简洁的handler原理解释
    handler解惑
    Http中get和post的区别
    使用软引用缓存Bitmap
    Request头和Response头
    DNS编程实验--域名与IP的相互转换
    CString与string
    C++ string占多少个字节测试
    java中类的继承性和多态性实例
    java寻找html文件中的标签
  • 原文地址:https://www.cnblogs.com/zhangrunhao/p/7543435.html
Copyright © 2020-2023  润新知