正例:

    使用 ES6 的 const 定义常量

    反例中使用”var”定义的”常量”是可变的。

    在声明一个常量时,该常量在整个程序中都应该是不可变的。

    反例:

    1. var FIRST_US_PRESIDENT = "George Washington";

    正例:

    1. const FIRST_US_PRESIDENT = "George Washington";

    反例:

    1. getUserInfo();
    2. getClientData();
    3. getCustomerRecord();

    使用易于检索名称

    我们需要阅读的代码远比自己写的要多,使代码拥有良好的可读性且易于检索非常重要。阅读变量名晦涩难懂的代码对读者来说是一种相当糟糕的体验。
    让你的变量名易于检索。

    反例:

    1. // 525600 是什么?
    2. for (var i = 0; i < 525600; i++) {
    3. runCronJob();
    4. }

    正例:

    1. // Declare them as capitalized `var` globals.
    2. var MINUTES_IN_A_YEAR = 525600;
    3. for (var i = 0; i < MINUTES_IN_A_YEAR; i++) {
    4. }

    反例:

    1. const cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;
    2. saveCityState(cityStateRegex.match(cityStateRegex)[1], cityStateRegex.match(cityStateRegex)[2]);

    正例:

    1. const ADDRESS = 'One Infinite Loop, Cupertino 95014';
    2. var cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;
    3. var city = match[1];
    4. var state = match[2];
    5. saveCityState(city, state);

    不要绕太多的弯子

    显式优于隐式。

    正例:

    1. var locations = ['Austin', 'New York', 'San Francisco'];
    2. locations.forEach((location) => {
    3. doStuff();
    4. doSomeOtherStuff();
    5. ...
    6. ...
    7. ...
    8. dispatch(location);
    9. });

    当类/对象名已经有意义时,对其变量进行命名不需要再次重复。

    反例:

    1. var Car = {
    2. carMake: 'Honda',
    3. carModel: 'Accord',
    4. };
    5. car.carColor = 'Red';
    6. }

    正例:

    1. var Car = {
    2. make: 'Honda',
    3. model: 'Accord',
    4. color: 'Blue'
    5. };
    6. function paintCar(car) {
    7. car.color = 'Red';
    8. }

    避免无意义的条件判断

    反例:

    1. function createMicrobrewery(name) {
    2. var breweryName;
    3. if (name) {
    4. breweryName = name;
    5. } else {
    6. breweryName = 'Hipster Brew Co.';
    7. }

    正例: