温故知新之ES6(七)

2018-09-12  本文已影响30人  simuty

Airbnb

1. 块级作用域

  1. let 取代 var.
  2. 全局常量和线程安全
1. const 可以提醒阅读程序的人,这个变量不应该改变;
2. const 比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;
3.  JavaScript 编译器会对 const 进行优化,所以多使用 const ,有利于提供程序的运行效率,也就是说 let 和 const 的本质区别,其实是编译器内部的处理不同。

2. 字符串

静态字符串一律使用单引号或反引号,不使用双引号。动态字符串使用反引号。

// bad
const a = "foobar";
const b = 'foo' + a + 'bar';

// acceptable
const c = `foobar`;

// good
const a = 'foobar';
const b = `foo${a}bar`;
const c = 'foobar';

3. 解构赋值

使用数组成员对变量赋值时,优先使用解构赋值。

const arr = [1, 2, 3, 4];

// bad
const first = arr[0];
const second = arr[1];

// good
const [first, second] = arr;

4. 对象

单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。

// bad

const a = { k1: v1, k2: v2, };

const b = {

  k1: v1,

  k2: v2

};


// good
const a = { k1: v1, k2: v2 };
const b = {
  k1: v1,
  k2: v2,
};

对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用 Object.assign 方法。

// bad
const a = {};
a.x = 3;

// if reshape unavoidable
const a = {};
Object.assign(a, { x: 3 });

// good
const a = { x: null };
a.x = 3;

// bad

const obj = {

  id: 5,

  name: 'San Francisco',

};

obj[getKey('enabled')] = true;



// good

const obj = {

  id: 5,

  name: 'San Francisco',
  // 即便是函数调用,也在一起
  [getKey('enabled')]: true,

};

5. 数组

使用扩展运算符(...)拷贝数组。

// bad

const len = items.length;

const itemsCopy = [];

let i;



for (i = 0; i < len; i++) {

  itemsCopy[i] = items[i];

}

// good
const itemsCopy = [...items];

6. 函数

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

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

那些需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了this。

// bad

[1, 2, 3].map(function (x) {

  return x * x;

});



// good

[1, 2, 3].map((x) => {

  return x * x;

});

// best
[1, 2, 3].map(x => x * x);

7. 模块

首先,Module语法是JavaScript模块的标准写法,坚持使用这种写法。使用 import 取代 require 。

// bad

const moduleA = require('moduleA');

const func1 = moduleA.func1;

const func2 = moduleA.func2;



// good

import { func1, func2 } from 'moduleA';

// commonJS的写法

var React = require('react');



var Breadcrumbs = React.createClass({

  render() {

    return <nav />;

  }

});



module.exports = Breadcrumbs;



// ES6的写法
import React from 'react';


class Breadcrumbs extends React.Component {

  render() {

    return <nav />;

  }

};

export default Breadcrumbs;

不要在模块输入中使用通配符。因为这样可以确保你的模块之中,有一个默认输出(export default)。

// bad

import * as myObject from './importModule';

// good
import myObject from './importModule';

如果模块默认输出一个函数,函数名的首字母应该小写。

function makeStyleGuide() {

}
export default makeStyleGuide;

如果模块默认输出一个对象,对象名的首字母应该大写。

const StyleGuide = {
  es6: {
  }
};

export default StyleGuide;

上一篇 下一篇

猜你喜欢

热点阅读