2014-04-01 47 views
0

我正在使用JSLint對大量與外部ERP系統交互的腳本執行代碼審查/清理。Howto:引用JSLint中的庫

我遇到的問題是JSLint抱怨API中的方法在被定義之前使用。

如何在JSLint中引用庫以便進行適當的查找?我有493個函數需要引用,所以/*Global*/不是一個選項。

如果這是不可能的,是否有更好的方法來做到這一點?

我引用this post這是要求類似的東西,但答案需要API的重組,這是我無法做到的。

回答

0

什麼是圖書館?通常,你希望庫有一切正確的名稱空間,所以這不是問題,如在/*global $*/的jQuery。如果lib是內部的並且可以編輯它,請考慮這樣做(如果您想堅持嚴格的JSLint合規性)。

所以......

function myFunc1(param1) { 
    return param1 + "some string1"; 
} 


function myFunc2(param2) { 
    return param2 + "some string2"; 
} 

成爲...

var fauxNamespace = { 
    myFunc1: function (param1) { 
     return param1 + "some string1"; 
    },    
    myFunc2: function (param2) { 
     return param2 + "some string2"; 
    } 
}; 

然後你可以/*global fauxNamespace*/和利潤。我意識到這是不平凡的,但它是正確的事情(c)Crockford 2008.

否則你回到正常的「使用JSHint。它更快樂,因爲更多的選擇,」或「JSLint有very clean code。實際上可以自己破解它,如果你想要忽略那個錯誤,「各種答案。

你在找什麼,目前圍繞line 2459

// If the master is not in scope, then we may have an undeclared variable. 
// Check the predefined list. If it was predefined, create the global 
// variable. 

     if (!master) { 
      writeable = predefined[name]; 
      if (typeof writeable === 'boolean') { 
       global_scope[name] = master = { 
        dead: false, 
        function: global_funct, 
        kind: 'var', 
        string: name, 
        writeable: writeable 
       }; 

// But if the variable is not in scope, and is not predefined, and if we are not 
// in the global scope, then we have an undefined variable error. 

      } else { 
       token.warn('used_before_a'); 
      } 
     } else { 
      this.master = master; 
     } 

是圖書館公衆?

+0

糟糕。你引用了我之前就類似話題的回答。是的,如果你不能完成上述任務,你會陷入困境。 JSHint可能是「友好的」,或者你真的可以很容易地編輯JSLint。 – ruffin

+0

我想的很多。這是NetSuite API,因此無法對其進行編輯。儘管我已經能夠通過使用Aptana Studio擺脫大多數投訴,但它可以輕鬆忽略具體錯誤:-) –