美文网首页
ES6 ---- 函数

ES6 ---- 函数

作者: _by_w_z | 来源:发表于2017-03-27 19:20 被阅读0次
    • 函数参数的默认值
    function log(x, y = 'World') {
      console.log(x, y);
    }
    log('Hello') // Hello World
    log('Hello', 'China') // Hello China
    log('Hello', '') // Hello
    //如果参数的默认值是变量,那么每次都会重新计算默认值表达式
    let x = 99;
    function foo(p = x + 1) {
      console.log(p);           
    }
    foo() //100
    x=100
    foo() //101
    
    • 与解构赋值配合使用
    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
    
    • rest参数
    //rest参数必须放在最后
    function add(a,...values) {
      let sum = a;
      for (var val of values) {
        sum += val;
      }
      return sum;
    }
    add(2, 5, 3) // 10
    
    • 箭头函数
    var f = () => 5;
    // 等同于
    var f = function () { return 5 };
    
    • 使用箭头函数的注意点
    1. 函数体内的this对象,是定义生效时所在的对象,而不是使用时所在的对象
    2. 不可以当做构造函数
    3. 不可以使用arguments对象,可以使用rest代替
    4. 不可以使用yield命令
    function foo() {
      return () => {
        return () => {
          return () => {
            console.log('id:', this.id);
          };
        };
      };
    }
    //在此时定义生效,this则指向所在对象
    var f = foo.call({id: 1});
    var t1 = f.call({id: 2})()(); // id: 1
    var t2 = f().call({id: 3})(); // id: 1
    var t3 = f()().call({id: 4}); // id: 1
    

    相关文章

      网友评论

          本文标题:ES6 ---- 函数

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