2013-01-01 61 views
0

我很想生活在一個無塵的世界。 JSLint就是這樣。但是我有一些問題,我不確定我應該忽略或修復。具體來說,我得到一些:JSLint和未定義的功能

[functionName] not defined 

錯誤。我不承認,你總是應該使用它之前定義的功能,我以爲這就是該消息確實警告反對,但這裏有兩種情況,我認爲這是一個有效的例外:

jQuery(document).ready(function($) { 
    // code goes here 
} 

在一個簡單的文件,該文件從jQuery的一個典型的noconflict包裝開始,我得到一個警告,說「jQuery(document).ready(function($){」沒有被定義,顯然jQuery是在一個單獨的文件中定義的,需要保持獨立。 ?

第二個例子實際上非常相似,儘管可以說它更容易避免。在這種情況下,我的項目中有兩個JS文件,一個看起來就像上面的一個(也就是一組DOM觸發器d事件包裝在jQuery的「ready」事件中)。另外有一些看起來像這樣的輔助功能:

function doSomethingImportant() { }; 
function doSomethingImpressive() { }; 

這些功能則稱爲第一JS文件中。 JSLint不喜歡這個,並且每次第一個JS文件調用第二個JS文件中定義的函數時都會抱怨:doSomethingImportant(){未定義。然而實際上,由於函數是在加載時定義的,並且對這些函數的調用總是隨後基於DOM事件發生,所以從未出現真正的問題。

無論如何,開放的想法。這是過濾JSLint的建議或我應該修復代碼的情況嗎?

+1

看看頁面的底部,這裏有一個輸入字段,其中帶有*預定義的全局變量*。只需添加所有不含逗號的全局變量,例如'jQuery doSomethingImportant doSomethingImpressive'。 – Yoshi

回答

1

你收到這些錯誤,因爲JSLint的假設在未來的某些時候,你可能會做:

var doSomethingImpressive = function() { } 

在這種情況下,你會得到一個錯誤,因爲在函數定義的文件包括函數調用後(如解釋here

這同樣適用於jQuery調用。您可以更改腳本的順序,也可以安全地忽略錯誤。