我猜屏幕前的你应该是 ReactVue 或者 Node.js 的开发者吧。你可以编写业务代码并让他们无误的跑起来。不过你能编写出视觉美观并可被他人理解的代码么?

今天我们将了解一些使你的 JavaScript 代码干净整洁的小规则。

规则 1:不要使用随机字符串作为变量名

不要用一些随机字符串来表示一个变量。

// 错误 const x = 4;

正确的命名变量,以便描述变量值。

// 正确 const numberOfChildren = 4;

规则 2:使用小驼峰命名法

不要使用下划线命名法,大驼峰命名法,或者以动词开头的命名。

// 错误:以大写字母开头 var UserName = "Faisal"; ----- // 错误:以动词开头 var getUserName = "Faisal"; ----- // 错误:使用下划线 var user_name = "faisal";

应该使用代表名词的驼峰命名法。

// 正确 const userName = "Faisal";

规则 3:使用正确的函数命名法

不要使用任何名词作为函数名称,避免与变量名称搞混。

// 错误:以大写字母开头 function DoSomething() { // 代码 } ---- // 错误:以名词开头 function car() { // 代码 } ---- // 错误:使用下划线 function do_something() { // 代码 }

应使用动词开头并使用小驼峰命名法。

// 正确 function doSomething() { // 代码 }

规则 4:使用大驼峰给构造函数命名

// 错误:使用小写字母开头 function myObject() { // 代码 } ---- // 错误:使用下划线 function My_Object() { // 代码 } ---- // 错误:使用动词开头 function getMyObject() { // 代码 }

同样的,构造函数应以非动词开头,因为 new 是创建对象实例的动作。

// 正确 function MyObject() { // 代码 }

规则 5:全局常量

全局常量值不应改变,也不应像普通变量一样命名。

// 错误 const numberOfChildren = 4; // 错误 const number_of_children = 4;

他们应全部大写,并以下划线分割。

// 正确 const NUMBER_OF_CHILDREN = 4;

规则 6:变量赋值

不要把没有括号的条件比较结果赋值给变量。

// 错误 const flag = i < count;

把表达式用括号括起来:

// 正确 const flag = (i < count);

规则 7:相等操作符的使用

不要使用 “==” 或者 “!=” 来比较值。因为它们在比较前不会做类型检查。

// 错误 if (a == b){ // 代码 }Copy

Instead, always use “=” or “!” to avoid type coercion errors.
反之,请始终使用 “=” 或 “!

// 正确 if (a === b){ //代码 }

规则 8:三元运算符的使用

不要使用三元运算符代替 if 语句:

// 错误 condition ? doSomething() : doSomethingElse();

仅用于根据某些条件给变量赋值:

// 正确 const value = condition ? value1 : value2;

规则 9:使用简单语句

虽然 JavaScript 支持单行多语句,但尽量不要把多个语句写在同一行内。

// 错误 a =b; count ++;Copy

而应该将多个语句写到多行上,并始终给行尾加上分号。

// 正确 a = b; count++;Copy

规则 10:if 语句的使用

不要忽略 if 语句中的花括号,并永远不要将其放到一行上。

// 错误:间距不当 if(condition){ doSomething(); } ---- // 错误:缺少花括号 if (condition) doSomething(); ---- // 错误:全放在一行 if (condition) { doSomething(); } ---- // 错误:全放一行并且不加花括号 if (condition) doSomething();

始终记得使用花括号并保持适当间距:

// 正确 if (condition) { doSomething(); }

规则 11:循环的使用

请不要再循环初始化中申明变量。

// 错误:在循环初始化期间声明变量 for (let i=0, len=10; i < len; i++) { // 代码 }

应在循环之前对变量进行声明。

// 正确 let i = 0; for (i=0, len=10; i < len; i++) { // 代码 }

规则 12:一致的缩进长度

始终使用两个空格或四个空格。

// 正确 if (condition) { doSomething(); }

规则 13:行的长度

每行不得超过 80 字符。如果该行确实很长,则应拆为新的一行。

// 错误:下一行代码仅缩进四个空格 doSomething(argument1, argument2, argument3, argument4, argument5); // 错误:在分割符前中断行 doSomething(argument1, argument2, argument3, argument4 ,argument5);

第二行应该缩进为 8 个空格,而不是 4 个,并且不应以分隔符开头。

// 正确 doSomething(argument1, argument2, argument3, argument4, argument5);

规则 14:原始字符

字符串不应以单引号定义

// 错误 const description = 'this is a description';

应始终以双引号定义

// 正确 const description = "this is a description";

规则 15:“undefined” 的用法

不要直接使用未定义变量的 undefined

// BAD if (variable == "undefined") { // 代码 }

如果想知道变量是否定义,请使用 typeof 操作符。

// 正确 if (typeof variable == "undefined") { // 代码 }

遵循这些规则,可以时您的 JavaScript 项目更加整洁可读。

这些规则摘选自 “可维护 JavaScript” 一书,编写自 “Nicholas C. Zakas”。因此如果您不同意其中的一些观点,我想这也没啥关系。毕竟样式问题本就千人前面。不过这里的规则对您来说可能会是个好引子。