今天來讓我們講講寫作風格吧,什麼叫做寫作風格呢?
指的是我們在撰寫程式時的樣式規則,也就是所謂的寫作習慣,每個人當然都會有自己的習慣,但當多人協作時,好的寫作習慣絕對是有益於團隊合作的,尤其對於 JavaScript 這樣自由度很高的程式語言,能使用程式清晰易讀、減少出錯、可以清楚表達你的意圖的風格,尤其重要。
今天會針對這幾點來做介紹
就讓我們開始吧!
大括號建議不要另起新的一行,因為 JavaScript 會在 return 後自動加上分號
。
// Good
function run() {
return {
abc: 123
}
}
console.log(run()); // {abc: 123}
// Bad
function run() {
return
{
abc: 123
}
}
console.log(run()); // undefined
對於空格並沒有特別的規範,所以依照各團隊習慣為主,在此建議函式與括號都不使用空格,其餘空一格,閱讀上會較為舒適。
// Good
var a = 0;
if(a === 0) {}
function foo(b) {
return (a + b);
}
(function(x) {
foo(x);
})();
// Bad
var a=0;
if(a===0){}
function foo(b){
return (a+b);
}
(function (x) {
foo (x);
})();
若下一行的第一個字元是 (、[、/、+、- ,則不會自動加上分號,所以請不要省略分號。
// Good
var a = 1;
(function() {
return "xxx";
})();
// Bad ( 1 is not a function )
var a = 1
(function () {
return "xxx"
})()
如果可以,盡量不要使用兩個等號的判斷 ==,因為在進行比較時會自動轉換型別,應該使用較為嚴謹的三等號 ===,避免因為自動轉型造成判斷上的不明確。
// Good
console.log(0 === ""); // false
console.log(1 === true); // false
console.log(2 === true); // false
console.log(0 === "0"); // false
console.log(false === "false"); // false
console.log(false === "0"); // false
// Bad
console.log(0 == ""); // true
console.log(1 == true); // true
console.log(2 == true); // false
console.log(0 == "0"); // true
console.log(false == "false"); // false
console.log(false == "0"); // true
使用 == 判斷時,等號兩邊的值會先自動轉型,再進行比較。
變數的宣告一律都放在函式的最前方,可以避免 Hoisting 問題。
// Good
var o;
if(!o) {
o = {};
}
// Bad
if (!o) {
var o = {};
}
盡量變免全域變數的使用,改使用立即函式,若真的無法避免,在變數名稱前加上底線來作為區隔。
// Good
(function() {
var _upperCase;
})();
避免忘記 new,建構函式的命名字首應該大寫。
// Good
function MyObject() {
this.x = 100;
}
var q = new MyObject();
// Bad
function myObject() {
this.x = 100;
}
var q = myObject();
變數中唯二能使用的符號為底線 _ 和 錢字號 $,其餘都必須是字母或者數字,這邊要記得一點,無法使用數字作為開頭命名,保留字的部分也無法做使用。ex. switch、if、else 等等
以下提供命名的規則供大家參考
駝峰式命名
( Camel Case )巴斯卡命名
( Pascal Case )i++ 為先顯示變數再做累加, ++i 則為先進行累加再做顯示。
var i = 0;
console.log(i++); //0
console.log(i); // 1
var a = 0;
console.log(++a); //1
console.log(a); // 1
最近天氣變得好冷,好容易想睡覺啊 ...
參考資料:
Tommy - 深入 JavaScript 核心課程
阮一峰 - Javascript 編程風格
型別判斷結果