2011-03-14 14 views
0

當我試圖通過ShrinkSafe縮小我的JavaScript文件,一個真棒縮小工具,它輸出一個空文件,這意味着我的JavaScript文件顯然包含錯誤?儘管在五種瀏覽器中都是完美的。所以我試着JSLint,另一個真棒網站,因此發現了數百個我糾正了大部分的樣式錯誤,但我不知道修復這些錯誤。這些是風格提示,哪些可能是遺留的潛在錯誤?ShrinkSafe minify工具抱怨:通過JSLint調試javascript代碼:樣式還是真實錯誤?

非常感謝您的風格或對這些問題的錯誤糾正提示。

JS LINT說,這些是

錯誤

問題在管線38字符55:缺少radix參數。

if (settings.crossLinking && location.hash && parseInt(location.hash.slice(... 

問題在管線39字符32:缺少radix參數

var currentPanel = parseInt(location.hash.slice(1)); 

問題在線路46字符30: 'currentPanel' 是已經定義

var currentPanel = settings.firstPanelToLoad; 

問題在管線47字符24: '偏移' 已定義

var offset = - (panelWidth*(currentPanel - 1)); 

問題在管線53字符30: 'currentPanel' 是已經定義

var currentPanel = 1; 

問題在線108字符33:缺少radix參數

if (sliderCount === parseInt($(this).attr("rel").slice(12))) { 

問題在線111字符35:缺少radix參數

targetPanel = parseInt($(this).attr("href").slice(1)); 

問題在線125字符55:缺少radix參數

if (settings.crossLinking && location.hash && parseInt(location.hash.slice(... 

問題在管線137字符45: 'currentPanel' 使用超出範圍

panelHeight = $('.panel:eq(' + (currentPanel - 1) + ')', slider).height(); 

在管線150字符73問題:預期 ';' ,而是看到「滑塊」。在線路

panelHeight = $('.panel:eq(' + x + ')', slider).height() 

問題161角色32: '偏移' 已定義。在管線168字符69

var offset = - (panelWidth*currentPanel); 

問題: '偏移' 使用超出範圍

$('.panel-container', slider).animate({ marginLeft: offset }, settings.sl... 

回答

3

缺少基數 - 絕對應該修復; parseInt應該是從來沒有沒有radix參數,因爲它太容易引入一個bug(字符串以「0」開始被解釋爲八進制)。

已經定義 - 有時也可以是一個錯誤,因爲你要覆蓋較早的值(這可能需要)。典型的有臨時變量,但是如果你知道自己在做什麼,並且你確實想重新定義一個變量,那麼它是安全的。

使用了範圍 - 檢查,如果這是你想要真的是什麼;它只是一個警告。

預期 ';'等等 - 你可能錯過了一個結局「;」在發言結束時。 JavaScript會自動將其插入行尾,但依賴此行爲絕不是一個好主意,因爲它會默默插入「;」有時在錯誤的地方,使你的代碼無法調試。

沒有看到我看起來像一個明確的語法錯誤。 Shrinksafe應該將它縮小。我建議你檢查Shrinksafe參數,看看你是否缺少任何東西。

還要考慮關閉編譯器(簡單模式),其產生比ShrinkSafe的更緊密壓縮。 Closure編譯器就像JSLint + Shrinksafe包裝在一起。鏈接到在線網絡服務:http://closure-compiler.appspot.com/home

+0

+1這個真棒鏈接!那很好地顯示了錯誤! – Sam 2011-03-14 05:33:09

+0

那麼錯誤是什麼? :-) – 2011-03-14 06:27:26

+0

HARD ERROR實際上並非上述「風格改進」硬性錯誤就像'float:'right'',它必須是'「float」:「right」'對於某些.css屬性,在沒有錯誤報告,它精美和神奇地縮小到一個小小的快樂炒編碼:) – Sam 2011-03-14 07:06:54

2

缺少基數參數:該函數parseInt函數有兩個參數。第二個是基數,它是可選的,但JSLint拋出一個錯誤。傳遞第二個參數爲10(基數10)來消除這個錯誤。 http://www.w3schools.com/jsref/jsref_parseInt.asp

VAR某某已被定義:您需要定義使用VAR變量只有一次,爲未來的任務,以相同的變量(比如currentPanel),省略了var

確保你在有分號每行的結尾(需要的地方)。失蹤;根據我的經驗,一旦縮小代碼就會導致代碼被中斷(因爲所有換行符都被刪除),這是頭號原因。

xyz超出範圍:表示變量未在代碼中的那一點定義。弄明白這一點需要更深入地瞭解代碼。

+1

+1引起缺少「 ;」在一條線的盡頭可能會弄碎縮小器。我認爲Shrinksafe解析js輸入,所以應該捕獲這些東西 - 這可能是它輸出空文件的原因。 – 2011-03-14 05:32:16