es6-函数默认参数-rest参数-扩展运算符

函数参数的默认值

  • es6允许给函数参数赋初始值
  1. 形参初始值(一般默认值的参数位置要靠后)
    function add(a, b, c = 10) {
        // 设置了初始值为10
        return a + b + c
    }
    let result = add(1, 2);
    console.log(result); // 结果是13
  2. 可以与解构赋值结合(函数解构)
    function connect({
        host = '127.0.0.1',
        username,
        password,
        port
        // 形参是一个对象
    }) {
        console.log(host);
        console.log(username);
        console.log(password);
        console.log(port);
    }
    
    // 调用 函数 传入实参
    connect({
        // 这是解构后的参数 
        username: 'root',
        password: 'root',
        port: 3306
    })
    // 这里host是默认值,就是 127.0.0.1

rest参数

  • es6 引入了 rest参数 用于获取函数的实参,用来代替 arguments

  • es5 获取实参的方法

    function date() {
        console.log(arguments);
    }
    date('lmk', 'kml') // 返回的是一个对象
  • rest参数获取实参

    function date1(...args) {
        console.log(args);
        // filter some 这些方法都可以使用
    }
    date1('lmk', 'kml') // 返回的是一个数组
  • rest 参数必须放到参数最后

    function fn1(a, b, ...args) {
          console.log(a);
          console.log(b);
          console.log(args);
      }
      fn1(1, 2, 3, 4, 5, 6) 
      // a = 1 b = 2 args = [3,4,5,6]
      // 和py的 **a一样
  • 扩展运算符

  • es6中 “…” 扩展运算符能将数组转换为逗号分隔的参数序列

  • 声明数组

    // 声明数组
    const lmk = [1, 2, 3, 4];
  • 声明函数

    function kkk() {
        console.log(arguments);
    }
    kkk(...lmk) // 不加 ... 就是返回一个对象,里面是一个序列,加 ... 返回的是 4个参数
    
    // 扩展运算符 和 rest参数很像
    // 但是扩展运算符是在实参传递的时候添加
    // 就是将数组转换成参数序列(将数组内的参数提取成一个一个的)

扩展运算符的应用

  1. 数组的合并
    const sz = ['李明凯', '凯明李']
    const zs = ['kkk', 'kjl']
    
    // 一开始可以这样做
    const kml = sz.concat(zs)
    console.log(kml);
    
    // 用扩展运算符合并数组
    const lmk = [...sz, ...zs]
    console.log(lmk);
  2. 数组的克隆
    const san = ['1', '2', '3']
    const er = [...san] // 有复杂数据类型的话是浅拷贝
    console.log(er);
  3. 将伪数组转为真正的数组
    // 利用3个div来把这3个div的对象转换成数组
    const divs = document.querySelectorAll('div');
    console.log(divs); // 是一个对象
    // 将对象转换为数组
    const divArr = [...divs]
    console.log(divArr); // 已经转为数组了

本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!