做为一个程序员,确定但愿能写出一手好代码,看起来赏心悦目,又易于理解。既方便往后本身回来翻阅一眼就能明白代码在干什么,又能让接手的人很快上手,看到精妙的地方,不禁自主地发出由衷的感叹,悄无声息地改变别人很差的习惯。javascript
编码规范就是指导如何编写和组织代码的一系列标准。核心原则是:代码应该简洁易懂,逻辑清晰,优先保证程序的正确性。html
一个主要的缘由是:每一个人写代码的方式都是不一样的。我可能喜欢这么写,而你喜欢用另外一种方法写。若是咱们只处理本身的代码,这样并无什么问题。但若是有不少的程序员同时在一个代码库上面工做呢?若是没有规范,事情很快会变得一团糟。代码规范可让新人迅速的熟悉相关的代码,而且也能写出让其余程序员简单易懂的代码。不一样的公司有着不一样的规范,但追求的目标是相同的,就是统一代码编写风格,提升工做效率。经过阅读不一样的编码规范,你能够知道在各个公司里代码是如何编写的。java
号称是“最合理的编写 JavaScript 代码的方式”。git
Airbnb 是一家位于美国旧金山的公司,本文是其内部的 JavaScript编码规范,写得比较全面程序员
在 Github 上有 88,897+ ⭐️,1,7152 + Fork,几乎覆盖了JavaScript的每一项特性。github
地址: https://github.com/airbnb/javascriptapi
中文版地址: https://github.com/lin-123/javascript数组
一个功能强大的 JavaScript 代码规范,自带 linter 和自动代码纠正,无需配置,自动格式化代码、提早发现风格及程序问题。浏览器
本规范特色之一是简洁。谁也不想为每一个项目维护一份有成百上千行语句的代码风格配置文件。有此规范就够了。app
不再用维护 .eslintrc, .jshintrc, or .jscsrc 。开箱即用。
这个代码规范被不少知名公司所采用,好比 NPM、GitHub、mongoDB 等。
若是我不一样意某条规则,能够改吗?不能够,制定这套 standard 规范的目的就是让你们都没必要再花时间浪费在无谓的代码风格之争上面了。 github上有 22,392+ ⭐️,1,702+ Fork
地址:https://github.com/standard/standard(这个 Github 地址霸气到不行。)
只有遵照了这里的规则,一个 JavaScript 源文件才能被称为“Google Style”。很霸气,我行我素,同时也被很多公司沿用。
地址:https://google.github.io/styleguide/jsguide.html
Google: 2个空格
Airbnb: 2个空格
Standard: 2个空格
Airbnb:单引号定义字符窜 使用模板字符串取代链接字符串
Standard: 单引号定义字符串 使用模板字符串取代链接字符串
Google: 使用单引号 使用模板字符串取代链接字符串
Google: 默认使用const let 。杜绝var。
Standard: 不容许存在冗余变量,每一个 var 关键字单独声明一个变量。
Airbnb: 使用let const.
Airbnb:
// bad
const item = new Object();
// bad
const items = new Array();
// good
const item = {};
// good
const items = [];
复制代码
Standard:
var nums = new Array(1, 2, 3) // ✗ avoid
var nums = [1, 2, 3] // ✓ ok
复制代码
Airbnb:
// good
const hero = {
firstName: 'Ada',
lastName: 'Lovelace',
birthYear: 1815,
superPower: 'computers',
};
复制代码
Standard: 始终将逗号置于行末 && 不容许有多余的行末逗号,
// ✓ ok
var list = [1, 2, 3, 4]
var obj = {
message: 'hello', // ✗ avoid
}
复制代码
Google:请在末尾加上逗号。
Airbnb:加分号 Why? 当 JavaScript 遇到没有分号结尾的一行,它会执行自动插入分号 Automatic Semicolon Insertion这一规则来决定行末是否加分号。若是JavaScript在你的断行里错误的插入了分号,就会出现一些古怪的行为。当新的功能加到JavaScript里后, 这些规则会变得更复杂难懂。显示的结束语句,并经过配置代码检查去捕获没有带分号的地方能够帮助你防止这种错误。
standard: 无分号--这没有什么很差 不骗你! 可是,不要使用 (, [, or 等做为一行的开始。在没有分号的状况下代码压缩后会致使报错,而坚持这一规范则可避免出错。 当前主流的代码压缩方案都是基于词法(AST-based)进行的,因此在处理无分号的代码时彻底没有压力(况且 JavaScript 中分号原本就不是强制的)。
Google:每一个语句必须以分号结尾。禁止依靠自动分号插入。
Airbnb:
function test() {
console.log('test');
}
// good
if (isJedi) {
fight();
}
// good
const x = y + 5;
// good
function bar(foo) {
return foo;
}
// good
var obj = { "foo": 42 };
//在行的末尾避免使用空格
//避免使用多个空行
复制代码
standard:
if (condition) { ... }
funtion name (arg) { ... }
var list = [1, 2, 3, 4]
function greet (name, options) { ... }
//单行代码块两边加空格
function foo () { return true } // ✓ ok
//comment // ✗ avoid
// comment // ✓ ok
单行代码块两边加空格
function foo () {return true} // ✗ avoid
function foo () { return true } // ✓ ok
/*comment*/ // ✗ avoid
/* comment */ // ✓ ok
复制代码
使用 ==== 和 !== 而不是 == !=
airbnb: yes
standard: yes,但在须要检查 null || undefined 时可使用 obj == null。
Airbnb: const foo = maybe1 > maybe2 ? 'bar' : maybeNull;
standard: ? 和 : 与他们所负责的代码处于同一行
// ✓ ok
var location = env.development ? 'localhost' : 'www.api.com'
// ✓ ok
var location = env.development
? 'localhost'
: 'www.api.com'
复制代码
Airbnb: 文件结尾空一行
google: 文件以空行结尾
standard:文件末尾留一空行。
Airbnb: 不容许
google: 不容许
standard:不容许
Airbnb: 变量和函数名统一使用驼峰命名法
Google: 每次只声明一个变量,常量命名应该使用全大写格式,并用下划线分割。 若是这个常量是一个函数,那么应该使用驼峰式命名法
standard: 对于变量和函数名统一使用驼峰命名法。不能包含下划线。
Airbnb: ✔️
Google: ✔️
standard: ✔️
结语:此文只是罗列了代码中比较常见的JavaScript语法规范,更多细节的规范还须要反复阅读规范原文,不断熟悉规范,💁若是你(我)要在编写JS上投入很长时间的话,我强烈建议推荐通读这几家公司编写的代码规范,每每最后能能够改变你的编写JS代码习惯。