美文网首页精通ES6
ES6笔记 - 函数的扩展

ES6笔记 - 函数的扩展

作者: 朗迹张伟 | 来源:发表于2016-06-23 19:13 被阅读59次

    函数参数的默认值


    ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。

    function log(x, y = 'World') { 
      console.log(x, y);
    }
    log('Hello') // Hello World
    log('Hello', 'China') // Hello China
    log('Hello', '') // Hello
    

    与解构赋值默认值结合使用


    参数默认值可以与解构赋值的默认值,结合起来使用。

    function foo({x, y = 5}) { 
      console.log(x, y);
    }
    foo({}) // undefined, 5
    foo({x: 1}) // 1, 5
    foo({x: 1, y: 2}) // 1, 2
    foo() // TypeError: Cannot read property 'x' of undefined
    

    函数的length属性


    指定了默认值以后,函数的length
    属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真。

    (function (a) {}).length // 1
    (function (a = 5) {}).length // 0
    (function (a, b, c = 5) {}).length // 2
    

    rest参数


    ES6引入rest参数(形式为“...变量名”),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

    function add(...values) { 
      let sum = 0; 
      for (var val of values) { 
        sum += val; 
      } 
      return sum;
    }
    add(2, 5, 3) // 10
    
    //给一个组数字sort排序
    // arguments变量的写法ES5
    function sortNumbers() { 
      return Array.prototype.slice.call(arguments).sort();
    }
    // rest参数的写法ES6
    const sortNumbers = (...numbers) => numbers.sort();
    
    //下面是一个利用rest参数改写数组push方法的例子。
    function push(array, ...items) { 
      items.forEach(function(item) { 
        array.push(item); 
        console.log(item); 
      });
    }
    var a = [];
    push(a, 1, 2, 3)
    
    //注意,rest参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
    // 报错
    function f(a, ...b, c) {  // ...}
    

    相关文章

      网友评论

        本文标题:ES6笔记 - 函数的扩展

        本文链接:https://www.haomeiwen.com/subject/owfodttx.html