函数

立即执行函数可以写成箭头函数的形式。

  1. (() => {
  2. console.log('Welcome to the Internet.');
  3. })();

那些使用匿名函数当作参数的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了 this。

  1. // bad
  2. [1, 2, 3].map(function (x) {
  3. return x * x;
  4. });
  5. // good
  6. [1, 2, 3].map((x) => {
  7. return x * x;
  8. });
  9. // best
  10. [1, 2, 3].map(x => x * x);

箭头函数取代Function.prototype.bind,不应再用 self/_this/that 绑定 this。

  1. // bad
  2. const self = this;
  3. const boundMethod = function(...params) {
  4. return method.apply(self, params);
  5. }
  6. // acceptable
  7. const boundMethod = method.bind(this);
  8. // best
  9. const boundMethod = (...params) => method.apply(this, params);

简单的、单行的、不会复用的函数,建议采用箭头函数。如果函数体较为复杂,行数较多,还是应该采用传统的函数写法。

所有配置项都应该集中在一个对象,放在最后一个参数,布尔值不可以直接作为参数。

  1. // bad
  2. function divide(a, b, option = false ) {
  3. }
  4. // good
  5. function divide(a, b, { option = false } = {}) {
  6. }

不要在函数体内使用 arguments 变量,使用 rest 运算符(…)代替。因为 rest 运算符显式表明你想要获取参数,而且 arguments 是一个类似数组的对象,而 rest 运算符可以提供一个真正的数组。

  1. // bad
  2. function concatenateAll() {
  3. const args = Array.prototype.slice.call(arguments);
  4. return args.join('');
  5. }
  6. // good
  7. function concatenateAll(...args) {
  8. return args.join('');
  9. }

使用默认值语法设置函数参数的默认值。

  1. // bad
  2. function handleThings(opts) {
  3. opts = opts || {};
  4. }
  5. // good
  6. function handleThings(opts = {}) {
  7. // ...
  8. }