2012-02-13 87 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