前奏
約定JavaScript使用ES6标準開發
wxs(WeiXin Script)和JavaScript是不同的語言,有自己的文法,wxs請參考wxs文檔,這裡的規範僅針對js。
變量命名
關于變量命名,主流分為駝峰式命名和下劃線式命名兩大陣營。我們約定,統一使用駝峰式命名。
-
推薦寫法
let userId = 654321;
function getUserInfo () {
....
}
-
不推薦寫法
let user_id = 654321;
function get_user_info () {
....
}
分号
盡管現在JavaScript引擎知道該在什麼情況下自動添加分号,由于項目曆史原因和避免代碼壓縮時産生不必要的問題,我們約定使用分号。分号緊跟代碼的最後一個字元。
-
推薦寫法
let loading = -1;
-
不推薦寫法
let loading = -1 ;
逗号
逗号分割清單時,逗号放置在目前行的末尾。
-
推薦寫法
let bar = 1,
foo = 2;
-
不推薦寫法
let bar = 1
, foo = 2;
數組(或對象)的最後一個元素(或屬性)後面的逗号是拖尾逗号,示例:
let o = {
a: 1,
b: 2, // 拖尾逗号
}
對于數組和對象,最後一個元素或屬性與右括号]或}不在同一行時,可以(但不要求)使用拖尾逗号;在同一行時,禁止使用拖尾逗号。
-
推薦寫法
let arr = [\'name\',
\'age\',
\'gender\',
]
let o1 = {a: 1,b: 2};
let o2 = {
a: 1,
b: 2,
};
-
錯誤寫法
let arr = [\'name\',\'age\',\'gender\',]
let o1 = {a: 1,b: 2,}
縮進
統一使用2個空格字元進行代碼縮進。
空格
操作符
操作符前後加一個空格字元。
-
推薦寫法
let a = 1 + 2;
-
不推薦寫法
let a = 1+2;
逗号
同一行内代碼用到逗号,逗号後面加一個空格字元,提高代碼可讀性。
-
推薦寫法
let bar = 1, foo = 2;
let arr = [1, 2, 3, 4, 5];
-
不推薦寫法
let bar = 1,foo = 2;
let arr = [1,2,3,4,5]
函數
函數聲明式聲明函數時,函數名與參數括号()連在一起,之間不加空格;參數括号()與函數體的左大括号{之間一個空格字元。
-
推薦寫法
function getInfo(userId) {
...
}
-
不推薦寫法
function getInfo1 (userId) {
...
}
函數字面量裡,關鍵字function與參數括号()之間一個空格字元,參數括号()與函數體的左大括号{之間一個空格字元。function getInfo2(userId){ ... }
-
推薦寫法
let getInfo = function (userId) {
...
}
-
不推薦寫法
let getInfo1 = function(userId) {
...
}
函數調用時,禁止有空格。let getInfo2 = function(userId){ ... }
-
推薦寫法
getInfo();
-
錯誤寫法
getInfo ();
對象字面量
對象字面量的屬性名和冒号:之間不能有空格字元,冒号:和屬性值之間一個空格字元。
-
推薦寫法
let o1 = { a: 1, b: 2, c: 3 }
let o2 = {
e: 5,
f: 6,
g: 7,
}
-
不推薦寫法
let o1 = { a:1, b :2, c : 3}
let o2 = {
e:5,
f :6,
g : 7,
}
對象字面量在一行内時,左括号{和右括号}與代碼各間隔一個空格字元。
-
推薦寫法
let o1 = { a: 1, b: 2, c: 3 }
-
不推薦寫法
let o1 = {a: 1, b: 2, c: 3}
單行代碼
在單行代碼中使用空格。
-
推薦寫法
function foo() { return true }
if (true) { return true }
-
不推薦寫法
function foo(){return true}
if(true){return true}
代碼塊
大括号{}包裹起來的代碼叫代碼塊,示例:
{
let userId = 654321;
}
代碼塊前統一加一個空格字元
-
推薦寫法
if (true) {
return \'成功!\'
}
function getInfo() { ... }
-
不推薦寫法
if (true){
return \'成功!\'
}
function getInfo(){ ... }
計算屬性
在對象的計算屬性内,禁止有空格。
-
推薦寫法
obj[\'name\']
-
不推薦寫法
obj[\'name\' ]
obj[ \'name\']
空行
空行對分離代碼邏輯有幫助,但過多的空行會占據太多的螢幕空間,影響代碼可讀性。我們約定,最大連續空行數為2。
-
推薦寫法
if(true) {
console.log(\'成功!\');
}
function getUserInfo () { ... }
-
不推薦寫法
if(true) {
console.log(\'成功!\');
}
function getUserInfo () { ... }
在非空檔案中,拖尾空行可以減少版本控制時的代碼沖突。
-
推薦寫法
function getUserInfo () {
...
}
// ↑上面一行是空行
-
不推薦寫法
function getUserInfo () {
...
}
大括号{}風格
用來描述大括号{}與代碼塊相對位置的方法很多,如下:
-
風格一
if (true) {
console.log(\'true\');
} else {
console.log(\'false\');
}
-
風格二
if (true) {
console.log(\'true\');
}
else {
console.log(\'false\');
}
-
風格三
if (true)
{
console.log(\'true\');
}
else
{
console.log(\'false\');
}
我們約定,使用風格一。