我使用下面的命名空間模式「之前它被定義爲使用的功能」的JSLint:命名空間格局導致錯誤
var MyNamespace = new function() {
var foo = function() {
bar();
};
var bar = function() {
alert("bar");
};
this.init = function() {
foo();
};
};
$(document).ready(function() {
MyNamespace.init();
});
的JSLint抱怨它的定義之前bar
使用。但foo
不會被調用,直到bar
已被聲明爲止。該代碼適用於我嘗試過的所有瀏覽器:http://jsfiddle.net/jDKvz/
該模式爲每How do I declare a namespace in JavaScript?,第二個答案。
我是否需要在此修復某些內容,還是應該忽略JSLint?
大概假如你顛倒了這兩個函數的順序,JSLint會很高興,但是你是否「需要」這樣做是主觀的。我不同意JSLint的一切,但在這種情況下,我可能只是改變代碼來讓它閉嘴。 – nnnnnn
@nnnnnn我的真實項目要複雜得多,可能包含相互調用的函數。 – Flash
在這種情況下,我很樂意在這一點上忽略JSLint。儘管我可能會嘗試使用'function foo()...'語法而不是'var foo = function()...'來查看它是否有任何區別,因爲它很煩人必須記住哪些lint警告/錯誤必須其實關心... – nnnnnn