直接比較字符串是JavaScript中的常見做法。 ENUM狀結構,雖然容易實現,通常不很習慣,因爲你要麼必須定義您的ENUM樣的全局或做類似:
application.enums.myObject.hover= 1;
application.enums.myObject.click= 2;
myObject= new application.constructors.MyObject();
myObject.create(title, text, orientation, application.enums.myObject.hover, layout)
以這種方式唯一的應用程序是全球性的,但輸入的應用.enums.myObject是一個痛苦。
如何處理錯誤:
選項1:拋出一個異常:
Create: function (title, text, orientation, trigger, layout) {
if (trigger !== "hover" && trigger !== "click") {
throw "error: invalid parameter trigger";
}
},
,除非你有一個catch子句某處這將崩潰的腳本。在某些情況下,讓派對崩潰總比沒有提供一種方式來知道什麼是錯的更好。如果你打算捕捉這些異常(而不是讓它們只是使腳本崩潰),我建議通過爲錯誤等進行類化來正確地執行它。
選項2:返回null。
Create: function (title, text, orientation, trigger, layout) {
if (trigger !== "hover" && trigger !== "click") {
return null;
}
},
如果您要使用函數的返回值,此方法效果會更好。在調試時,當嘗試使用返回值時會看到「對象沒有名爲X的屬性」錯誤(或者如果您使用它的話,您的值將被強制轉換爲「null」字符串)。
選項3:靜靜地忽略錯誤,什麼都不做。你的腳本可能會自行崩潰,或者它什麼都不會做。不建議
意見:
1 - 不要在生產代碼中使用控制檯對象。這不是標準的一部分,除非你打開開發者控制檯,否則IE不會將它暴露給網頁。
2 - 不要用大寫字母開頭函數名,除非它是一個函數,應該用'新'關鍵字(即構造函數)。
假設您的意圖是創建公開可用的東西,它應該有一個發佈的API來定義參數,並且不應該要求開發人員閱讀代碼。 –
您是否想知道如何驗證* one *特定參數的值或如何處理如此多的參數。就個人而言,如果有超過3個參數,並且如果可以有可選的參數,我會讓該函數接受一個對象。使用默認值是很好的IMO。 –
@JamesMontagne如果聽起來像我願意將它發佈到某個地方,我很抱歉。這不僅僅是一個真正的問題,而是一個概念性的問題,但是我正在一家公司開發,並且我想使用最佳實踐,因爲其他開發人員也會使用這些代碼。 – v1n1akabozo