爲什麼JSLint會在使用尚未定義的函數時抱怨?關鍵是函數是被定義的 - 如果那個函數調用了那個函數,那個函數就存在了,事情就會起作用。jsLint錯誤:「在定義之前使用了somefunction()」
看看下面的代碼:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
有沒有辦法來組織這樣一種方式,它將使JSLint的快樂2種方法。我該如何處理這個問題?
爲什麼JSLint會在使用尚未定義的函數時抱怨?關鍵是函數是被定義的 - 如果那個函數調用了那個函數,那個函數就存在了,事情就會起作用。jsLint錯誤:「在定義之前使用了somefunction()」
看看下面的代碼:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
有沒有辦法來組織這樣一種方式,它將使JSLint的快樂2種方法。我該如何處理這個問題?
看到這個答案:
Contending with JS "used before defined" and Titanium Developer
基本上,如果你使用foo = function() { ... }
形式,你可以在上面聲明var foo, bar;
避免JSLint的錯誤。
但是這與函數foo()有點不同,是函數表達式和全部。另外,由於提升,在頂部聲明'var foo,bar'是多餘的。所以,簡而言之,'var foo = function()...,var bar = function()...'在技術上會做得很好。此外,我認爲,考慮到函數聲明是在其他任何東西之前加載的--JSLint應該已經修復了它們的東西。 – ZenMaster
@ ZenMaster:一個'jslint',['jsHint'](http://www.jshint.com/docs/)的分支,解決了這個問題,讓你在選項中設置''latedef':false''。 (它不影響變量名稱,只是函數名稱。) –
這個答案將打破依賴函數定義提升的代碼〜 –