es6中对于函数的扩展

207 阅读1分钟

es6中对于函数的扩展--常用

1、函数参数可以解构传参(rest) 语法: ...value 参数对应的是数组

function add(...values) {
  let sum = 0;

  for (var val of values) {
    sum += val;
  }

  return sum;
}

add(2, 5, 3) // 10

2、函数参数允许使用默认值

带默认值的参数应该是尾参,放在参数列表最后

函数增加了length属性,返回有默认值参数之前的参数个数;

设置了默认参数的函数,其参数会形成一个单独的作用域

3、不可在函数内部声明严格模式

只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错。

5、箭头函数

箭头函数的this指向

// ES6
function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

// ES5
function foo() {
  var _this = this;

  setTimeout(function () {
    console.log('id:', _this.id);
  }, 100);
}

使用注意事项:

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

如果返回对象,需要在对象外包一层括号,箭头函数将{}视为代码块

函数内this指向定义是对象,而非运行时对象

不可作为构造函数 6、name属性

var f = function () {};

// ES5
f.name // ""

// ES6
f.name // "f"

7、双冒号运算符

对象::函数 该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。

::obj.fn() 将该函数的this指向变为obj

如执行结果仍未对象,可以采用链式调用