Airbnb JavaScript编程规范

编程入门 行业动态 更新时间:2024-10-07 09:29:28

<a href=https://www.elefans.com/category/jswz/34/1768978.html style=Airbnb JavaScript编程规范"/>

Airbnb JavaScript编程规范

Airbnb JavaScript编程规范


  • 摘出最常使用以及最容易出现的错误?,做一点点ECMAScript 6 编码总结,正如该规范所说,为了用更合理的方式写 JavaScript。

1、所有不变动引用使用const,确保无法对引用重新赋值,也不会导致重复引用会导致bug和代码难以理解。若一定需要对参数重新赋值,使用块级作用域let。

2、使用字面值创建数组、对象、函数;切记不要使用函数构造器创建函数,会打开漏洞。

 e.gconst item = {};const items = [];const y = function a() {};

3、使用对象方法简写。

e.g
// bad
const atom = {value: 1,addValue: function (value) {return atom.value + value;},
};// good
const atom = {value: 1,// 对象的方法addValue(value) {return atom.value + value;},
};

4、使用同义词替换需要使用的保留字,避免产生冲突。

5、使用对象属性值的简写,并把所有简写的属性分组放在声明前半部分。

e.g.const lukeSkywalker = 'Luke Skywalker';
// badconst obj = {lukeSkywalker: lukeSkywalker,};
// goodconst obj = {lukeSkywalker,};

6、只对无效的标示使用引号’’,增加代码易读性并更容易被JS引擎压缩。

e.g const test = {a: 12,'a-zh': 13,};

7、数组或对象浅拷贝时推荐使用扩展运算符[…],获取对象指定的属性时,也推荐使用解构赋值运算符[…]。

e.g.const test = { a: 1, b: 2 };
// 扩展运算符const copy = { ...test, c: 3 }; //  { a: 1, b: 2, c: 3 }
// 解构赋值运算符const { a, ...noA } = copy; // noA => { b: 2, c: 3 }

8、用push代替直接向数组中添加一个值,即不能直接使用类似arr[4] = ‘xxx’。

9、使用 Array#from或是[…]运算符把一个类数组对象转换成数组,当然map遍历时更推荐使用Array#from,可以避免创建临时数组。

10、使用解构存取和使用多属性对象,解构能减少临时引用属性。

e.g.
// badfunction getFullName(user) {const firstName = user.firstName;const lastName = user.lastName;return `${firstName} ${lastName}`;}// goodfunction getFullName(obj) {const { firstName, lastName } = obj;return `${firstName} ${lastName}`;}
// bestfunction getFullName({ firstName, lastName }) {return `${firstName} ${lastName}`;}

11、使用 . 来访问对象的属性,但当通过变量访问属性时使用中括号 []。

12、直接给函数的参数指定默认值,不要使用一个变化的函数参数,使用参数默认值替代使用条件语句进行赋值;

e.g.
// badfunction handleThings(opts) {opts = opts || {};// ...}
// goodfunction handleThings(opts = {}) {// ...}

13、默认参数赋值需要放在参数列最后,不要对参数重新赋值。

e.g.function handleThings(name, opts = {}) {// ...}

14、默认参数要避免副作用使人迷惑。

15、不要在非函数块(if、while等等)内声明函数。把这个函数分配给一个变量。浏览器会允许这样做,但浏览器解析方式不同。

16、不使用arguments命名参数,优先级高于每个函数作用域自带的arguments对象,会导致函数自带arguments被覆盖。

17、不在字符串中使用eval()以及不使用不必要的转义字符。

18、函数签名部分要留空格,使得添加/删除名字时比较方便且具有统一性。

e.g.const y = function a() {};

19、总是使用模组 (import/export) 而不是其他非标准模块系统;import放在其他所有语句之前;多行import要缩进。

e.g.
// 标准模块系统import { es6 } from './AirbnbStyleGuide';export default es6;
// 多行importimport {longNameA,longNameB,longNameC,longNameD,longNameE,} from 'path';

20、不要从 import 中直接 export。
虽然一行代码(export { es6 as default } from './AirbnbStyleGuide';
)简洁明了,但让 import 和 export 各司其职让事情能保持一致。

21、在import语句里不允许Webpack loader语法。

22、不要使用 iterators。使用高阶函数例如 map() 和 reduce() 替代 for-of。
加强了不变的规则。处理纯函数的回调值更易读,这比它带来的副作用更重要。

23、优先使用 === 和 !== 而不是 == 和 !=。

24、string使用单引号’’,超过100个字符的字符串不应该用string串联成多行,会使得代码不美观且不容易被检索。

25、程序化生成字符串时,使用模板字符串代替字符串连接,更为简洁并且更具有可读性。

e.g.function sayHi(name) {return `How are you, ${name}?`;}

26、条件表达式例如 if 语句通过抽象方法 ToBoolean 强制计算它们的表达式并且总是遵守下面的规则:

* 对象 被计算为 true
* Undefined 被计算为 false
* Null 被计算为 false
* 布尔值 被计算为 布尔的值
* 数字 如果是 +0、-0、或 NaN 被计算为 false, 否则为 true
* 字符串 如果是空字符串 '' 被计算为 false,否则为 true

27、使用 2 个空格作为缩进,而非Tab键(大型提示报错现场️)。

28、每次记得增加结尾的逗号(养成良好编程习惯,该加的就加上)。会让 git diffs 更干净。另外,像 babel这样的转译器会移除结尾多余的逗号,也就是说不必担心老旧浏览器的尾逗号问题。

29、别保存 this 的引用,使用箭头函数或 Function#bind。

30、使用驼峰式命名对象、函数和实例。如果文件只输出一个类,那该文件名必须和类名完全保持一致。

31、当需要将浮点数转换成整型时,应该使用Math.floor()或者Math.round(),而不是使用parseInt()将字符串转换成数字。Math 是内部对象,所以Math.floor()其实并没有多少查询方法和调用时间,速度是最快的。

32、使用对象的spread操作符而不是Object.assign方法来浅拷贝对象。

e.g
// badconst original = { a: 1, b: 2 };const copy = Object.assign({}, original, { c: 3 }); // copy = { a: 1, b: 2, c: 3 }
// goodconst original = { a: 1, b: 2 };const copy = { ...original, c: 3 }; // copy = { a: 1, b: 2, c: 3 }const { a, ...noA } = copy; // noA = { b: 2, c: 3 }

更多推荐

Airbnb JavaScript编程规范

本文发布于:2024-03-23 21:26:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743018.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Airbnb   JavaScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!