zoukankan      html  css  js  c++  java
  • 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的兼容性的方法.

    感谢作者

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

  • 相关阅读:
    多线程实现双色球
    使用google api material icons在网页中插入图标
    网页前端制作好的网站
    n元线性方程非负整数解的个数问题
    Dilworth定理证明
    一个简易的Python全站抓取系统
    gensim word2vec好的教程
    C语言一些常用的功能
    python3正则表达式
    python3创建目录
  • 原文地址:https://www.cnblogs.com/zhangrunhao/p/7543435.html
Copyright © 2011-2022 走看看