我有一個漫長的JavaScript文件,通過JSLint除「定義之前使用」錯誤。爭奪JS之前「定義之前使用」和鈦開發者
我用正常的函數聲明,如...
function whatever() {do something;}
,而不是...
var whatever = function(){do something;};
與Steve Harrison's reply到一個較早的職位一致...
假設你用函數關鍵字聲明瞭所有的 函數,I 認爲它成爲編程風格 的問題。就個人而言,我傾向於以 似乎合乎邏輯的方式構造我的功能,並使代碼儘可能可讀爲 。例如,像你這樣的 ,我會在 的頂部放置一個初始化函數,因爲它是所有從 開始的地方。
...我喜歡以對我有意義的順序來看功能。該腳本在測試過的幾個瀏覽器(例如,FireFox,Safari,Mobile Safari,Fennec,IE,Chrome,Midori等)中完美運行。
問題出在這裏:我想使用Titanium構建的iPhone應用程序內部的腳本,但其編譯器停止並顯示「used before defined」錯誤。
我該如何解決這個問題?
這可能是一個愚蠢的問題,但也...如果函數需要以特定的順序調用,如何解決被調用函數的問題需要回調到最初調用它的函數?例如...
function buildMenu(){
Display a list of five menu items, each of which calls a function to build the associated screen.
}
function screen1() {
Display the screen associated with menu item #1.
}
如果函數需要以聲明,function screen1
需要先function buildMenu
。但是,如果在某些情況下screen1不能被創建並因此想重新顯示菜單(即,調用技術上尚未聲明的函數)呢?
哦,是的...還有一個問題:是否有網站或程序自動重新排序的功能,而不是要求程序員做手動?
謝謝。我沒有時間檢查以前的解決方案,所以我會給這個鏡頭。再次感謝。 – 2010-03-05 21:21:53
好點。我沒有真正測試我的解決方案。我只是通過jslint運行它。 – EndangeredMassa 2010-03-06 00:54:04
在JSLint和Titanium中完美工作。再次感謝。 B. 順便說一句:對於任何需要對現有腳本進行此更改的人(和我一樣),創建全局變量函數列表的簡單快捷方式是通過JSLint運行腳本並從底部複製全局列表結果。這不是100%準確,但在我的情況下,有大約100個功能,我只需要進行6次調整。 – 2010-03-06 04:24:17