2012-02-13 85 views
6

我知道JSLint只是一個指導,你應該採取它所說的一粒鹽,但是,我很好奇我怎樣才能解決這個警告,而無需重寫整個函數。這裏是感興趣的功能:JS Lint陣列文字符號與字符串拆分

function randomString(length) { 
    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split(''), 
    str = '', 
    i; 

    if (!length) { 
     length = randomNumber(chars.length); 
    } 

    for (i = 0; i < length; i++) { 
     str += chars[randomNumber(chars.length)]; 
    } 
    return str; 
} 

JS Lint告訴我「JS林特:使用數組文字符號[]」。它指向string.split()。如何滿足JSLint而不必重寫整個函數?它甚至有可能嗎?

我知道有其他的方法來產生隨機字符串;我對如何使用此方法解決JSLint警告感興趣。

+6

你甚至不需要在這種情況下一個數組,你可以把它作爲字符串,並使用'chars.charAt (...)'。也許這足以滿足JSLint。 – 2012-02-13 16:31:56

+0

這是一個好點,我可能會最終改變它。但是,我仍然想知道JSLint如何期望在此特定實例中使用數組文字符號。 – arb 2012-02-13 16:39:27

+0

不知道,但這裏是來源;)https://github.com/douglascrockford/JSLint/blob/master/jslint.js#L3578 – 2012-02-13 16:42:29

回答

3

可以調用與字符串作爲範圍字符串原型分割功能,以避免該警告:

var chars = String.prototype.split.call('ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz', ''), 

不知道爲什麼JSLint抱怨因爲split是一個String方法。

參見:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

這似乎也無投訴通過:

var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz', 
chars = alphabet.split(""); 
4

這裏是文字數組符號您的陣列:

[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'T', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] 

的JSLint可能提出的建議,因爲這樣的解釋並沒有在運行過程中分割字符串,而是早已陣列準備使用。

與此PHP的代碼只需生成:

php > $chars = str_split('ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'); 
php > echo "[ '".implode("', '", $chars)."' ]"; 
[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'T', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] 
php > 
+4

爲什麼複雜的PHP?只需在瀏覽器的* javascript *控制檯中鍵入'JSON.stringify('ABC ... xyz'.split('')):-) – Bergi 2012-02-24 08:21:41

+0

@Bergi我比PHP更擅長使用JS,謝謝:) – TimWolla 2012-02-24 15:16:48