變量和函數(shù)
? ? 變量名應(yīng)該總是遵循駝峰大小命名寫法承边,并且命名前綴應(yīng)當(dāng)是名詞酗昼。以名詞作為前綴可以讓變量和函數(shù)區(qū)分開來逸尖,因為函數(shù)名前綴應(yīng)當(dāng)是動詞锄开。
//????好的寫法
var count = 10素标;
var myName = “Nichlas”;
var found = true萍悴;
//? ? 不好的寫法:變量看起來像函數(shù)
var getcount = 10头遭;
var isFound = true;
//????好的寫法
functiongetName() {
????????return myName癣诱;
}
//? ?不好的寫法:函數(shù)看起來像變量
function theName() {
????????return myName计维;
}
????????總結(jié):盡量在變量名中體現(xiàn)出值得數(shù)據(jù)類型。比如:撕予,命名? ? count鲫惶、length、size和page表明數(shù)據(jù)類型是數(shù)字实抡,而命名? ? name欠母、title、和message 表明數(shù)據(jù)類型是字符串吆寨。
函數(shù)命名方法:
? ? ? ? 對于函數(shù)的方法命名來說赏淌,第一個單詞應(yīng)該是動詞。
? ? ? ? ? ? ? ? ? ? 動詞? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????? ????????????含義
????????????????????can? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數(shù)返回一個布爾值
????????????????????has? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數(shù)返回一個布爾值
????????????????????is? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 函數(shù)返回一個布爾值
????????????????????get? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 函數(shù)返回一個非布爾值
????????????????????set? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 函數(shù)用來保存一個值
示列:
????if (isEnabled()){
? ? ? ????? setName("Nicholas");??
??}???
?if(getName() === "Nicholas") {?
? ? ????? doSomething();??
??}
null:
? ? ? ? null是一個特殊值鸟废,但我們常常誤解它猜敢,將它和undefined搞混。在下列場景中應(yīng)當(dāng)使用null盒延。
●? ? 用來初始化一個變量缩擂,這個變量可能賦值為一個對象。
●? ? 用來和一個已經(jīng)初始化的變量比較添寺,這個變量可以是也可以不是一個對象胯盯。
●? ? ?當(dāng)函數(shù)的參數(shù)期望對象時,用作返回值傳入计露。
●? ? 當(dāng)函數(shù)的返回值期望是對象時博脑,用作返回值傳出。
還有下面一些場景不應(yīng)當(dāng)使用null
●????不要使用null來檢測是否傳入了某個參數(shù)票罐。
●? ? 不要用null來檢測一個未初始化的變量叉趣。
示列代碼:
// 好的方法
var person? = null;
//好的方法
function getPerson(){?
? ? ? if(condition){?
???????????????return? ? new Person(“Nicholas”)该押;
????????} else {
? ? ? ? ? ? ? ? return null疗杉;
????????}
}
//? ? 好的方法
var person = getPerson();
if(person !== null){?
? ????doSomething()蚕礼;
}
// 不好的寫法:用來和未初始化的變量比較
var person烟具;
if(person != null) {?
? ? ? doSomething()梢什;
}
?// 不好的寫法:檢測是否傳入?yún)?shù)
function doSomething(arg1,arg2朝聋,arg3嗡午,arg4){?
? ? ? if(arg4 != null){
? ? ? ? ? ? ? ? doSomethingElse();
????????}
}
????????理解null 最好的方式就是將它當(dāng)做對象的占位符(placeholder)冀痕。這個規(guī)則在所有的主流編程規(guī)范中都沒有提及荔睹,但對于全局維護(hù)性來說至關(guān)重要。
undefined:
????????undefined 是一個特殊值言蛇,我們通常將它和null搞混应媚。其中一個讓人頗為困惑之處在于 null == undefined 結(jié)果是true。 然而猜极,這兩個值得用途卻各不相同。那些沒有被初始化的變量都有一個初始值消玄,即 undefined跟伏,表示這個變量等待被賦值。
比如:
var? person翩瓜;
console.log(person === undefined)受扳; //true
盡管這段代碼能正常運行工作,但我們盡量避免代碼中使用undefined兔跌。
注釋:
????????單行注釋不應(yīng)當(dāng)連續(xù)多行注釋的形式出現(xiàn)勘高,除非你注釋掉一段換代碼。只有當(dāng)需要主是一段很長的文本時才使用多行注釋坟桅。
示列代碼:
// 好的寫法
if(condition) {
? ? // 如果代碼執(zhí)行到這里华望,則表明通過了所有的安全檢查?
? allowed();
}
// 不好的寫法:注釋之前沒有空格
if(condition) {
?// 如果代碼執(zhí)行到這里,則表明通過了所有的安全檢查
? ? allowed();
}
? ?正確的使用注釋:
????????何時添加注釋是程序員經(jīng)常爭論的一個話題仅乓。一種通行的指導(dǎo)原則是赖舟,當(dāng)代嗎不夠清晰時加注釋,而代碼很明確了時不應(yīng)當(dāng)添加注釋夸楣。
????//????不好的寫法
????//? ? ?初始化 count??
??????????var? count = 10宾抓;
????????代碼中初始化count 的操作顯而易見。 如果這個值10具有特殊的意義豫喧,通過戴拿無法看出來石洗,這個是有有必要添加注釋。
????//? ? 好的寫法
????// 改變這個值可能會讓它變成青蛙
????????var? count = 10紧显;