ECMAScript-----(四)函数的扩展

参数的默认值

  1. 用途:
  2. 说明:
  3. 注意:
    • 有默认值的参数需要写在参数的最后面,写在有默认值参数后面的参数不可省略
    • 函数的length属性,在函数参数有默认值时会失真,不会计算有默认值的参数
    • 默认值是变量时,作用域优先当前函数,其次才是全局作用域
  4. 例子:
    //与解构赋值结合
    // 写法一
    function m1({x = 0, y = 0} = {}) {
      return [x, y];
    }
    
    // 写法二
    function m2({x, y} = { x: 0, y: 0 }) {
      return [x, y];
    }
    // 函数没有参数的情况 m1() // [0, 0] m2() // [0, 0] // x和y都有值的情况 m1({x: 3, y: 8}) // [3, 8] m2({x: 3, y: 8}) // [3, 8] // x有值,y无值的情况 m1({x: 3}) // [3, 0] m2({x: 3}) // [3, undefined] // x和y都无值的情况 m1({}) // [0, 0]; m2({}) // [undefined, undefined] m1({z: 3}) // [0, 0] m2({z: 3}) // [undefined, undefined]
    //有默认值的函数,当穿undefined时会触发默认值,传null时不会触发默认值,即使null
    function foo(x = 5, y = 6) {
      console.log(x, y);
    }
    
    foo(undefined, null)
    // 5 null

扩展运算符(spread)

  1. 用途:将一个数组转为用逗号分隔的参数序列,主要用于函数调用,当作函数参数
  2. 说明:
  3. 注意:扩展运算符作参数时,需要置于参数最后一位,否则会报错
  4. 例子:
    //用于函数调用
    function push(array, ...items) {
      array.push(...items);
    }
    //用于求数组最大值
    let arr = [14,3,24]
    Math.max(...arr)
    //用于合并数组
    var arr1 = [0, 1, 2];
    var arr2 = [3, 4, 5];
    arr1.push(...arr2);
    //或者
    [...arr1, ...arr2]

箭头函数

  1. 用途:
  2. 说明:
  3. 注意:this指向定义时所在的对象,而不是使用时所在的对象
  4. 例子:
    var sum = (num1, num2) => num1 + num2;
    //等同于
    var sum = function(num1, num2) {
      return num1 + num2;
    };
    const full = ({ first, last }) => first + ' ' + last;
    //等同于
    function full(person) {
      return person.first + ' ' + person.last;
    }
    const isEven = n => n % 2 == 0;
    const square = n => n * n;

     

posted @ 2021-04-12 14:29  会转圈圈的哆瑞米  阅读(46)  评论(0编辑  收藏  举报