js书写规范

Posted want_Success

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js书写规范相关的知识,希望对你有一定的参考价值。

参考文献:https://github.com/airbnb/javascript

1. 使用 const 与 let 代替 var (const / let)

  1.1、常量使用 const 定义,避免使用 var 定义:这样可以确保无法重新分配,这可能导致错误并难以理解代码。

// bad
var a = 1;
var b = 2;

// good
const a = 1;
const b = 2;

  1.2、使用 let 代替 var 定义变量:let是像var这样的块作用域而不是函数作用域。

// bad
var count = 1;
if (true) {
  count += 1;
}

// good, use the let.
let count = 1;
if (true) {
  count += 1;
}

 

  注意: let 和 const 都是块作用域

2. 对象(Object)

  2.1 使用文字形式创建对象

// bad
const item = new Object();

// good
const item = {};

 

  2.2、使用对象方法的简写

// bad
const atom = {
  value: 1,

  addValue: function (value) {
    return atom.value + value;
  },
};

// good
const atom = {
  value: 1,

  addValue(value) {
    return atom.value + value;
  },
};

 

  2.3、使用属性速记:因为简短而具有描述性

const lukeSkywalker = ‘Luke Skywalker‘;

// bad
const obj = {
  lukeSkywalker: lukeSkywalker,
};

// good
const obj = {
  lukeSkywalker,
};

 

  2.4:、在对象声明的开头对速记属性进行分组。

const anakinSkywalker = ‘Anakin Skywalker‘;
const lukeSkywalker = ‘Luke Skywalker‘;

// bad
const obj = {
  episodeOne: 1,
  twoJediWalkIntoACantina: 2,
  lukeSkywalker,
  episodeThree: 3,
  mayTheFourth: 4,
  anakinSkywalker,
};

// good
const obj = {
 // 速记属性统一放前面或者后面 lukeSkywalker, anakinSkywalker, episodeOne:
1, twoJediWalkIntoACantina: 2, episodeThree: 3, mayTheFourth: 4, };

 

  2.5、仅引用无效标识符的属性:更容易阅读,因为他改善了语法突出显示的功能,并且还易于通过许多JS引擎进行优化。

// bad
const bad = {
  ‘foo‘: 3,
  ‘bar‘: 4,
  ‘data-blah‘: 5,
};

// good
const good = {
  foo: 3,
  bar: 4,
  ‘data-blah‘: 5,
};

 

3. 数组(Arrays)

  3.1、应尽量使用文字语法创建数组(如果有必要,特殊情况除外,如:new Array(10).fill(true))

// bad
const items = new Array();

// good
const items = [];

 

  3.2、使用 spread(‘...’)操作符copy数组

// bad
const len = items.length;
const itemsCopy = [];
let i;

for (i = 0; i < len; i += 1) {
  itemsCopy[i] = items[i];
}

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

 

  3.3、使用 spreads(‘...’)操作符将可迭代的对象转化为数组,而不是使用 Array.from([])

const foo = document.querySelectorAll(‘.foo‘);

// good
const nodes = Array.from(foo);

// best
const nodes = [...foo];

 

  3.4、Array.from 用于将类似数组的对象转换为数组

const arrLike = { 0: ‘foo‘, 1: ‘bar‘, 2: ‘baz‘, length: 3 };

// bad
const arr = Array.prototype.slice.call(arrLike);

// good
const arr = Array.from(arrLike);

 

  3.5、使用 Array.from 而不是spread ...来映射可迭代对象,因为它避免了创建中间数组。

// bad
const baz = [...foo].map(bar);

// good
const baz = Array.from(foo, bar);

 

  3.6、如果数组有多行,则在打开和关闭数组括号之前使用换行符(因为一行的宽度是有限的,而数列的高度是无限的,这样有利于代码的阅读)

// bad
const arr = [
  [0, 1], [2, 3], [4, 5],
];

const objectInArray = [{
  id: 1,
}, {
  id: 2,
}];

const numberInArray = [
  1, 2,
];

// good
const arr = [[0, 1], [2, 3], [4, 5]];

const objectInArray = [
  {
    id: 1,
  },
  {
    id: 2,
  },
];

const numberInArray = [
  1,
  2,
];

 

 

 

 

 未完待续....

 

 

 

 

  

 

以上是关于js书写规范的主要内容,如果未能解决你的问题,请参考以下文章

js书写规范

54js的数据类型及对象

CMD (sea.js)模块定义规范

JS书写规范

html css js书写规范

Angularjs书写规范