带有字符串拆分的JS Lint数组文字表示法

时间:2012-02-13 16:22:49

标签: javascript jslint

我知道JSLint只是一个指南,你应该带着它说的话,但是,我很好奇我怎么能解决这个警告而不重写整个功能。以下是感兴趣的功能:

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 Lint:使用数组文字符号[]。”它指向string.split()的行。如何在不重写整个函数的情况下满足JSLint?它甚至可能吗?

我知道还有其他方法可以生成随机字符串;我对如何使用此方法解决JSLint警告感兴趣。

2 个答案:

答案 0 :(得分: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可能会建议它,因为解释器不需要在运行时拆分String,而是已经准备好使用Array了。

只需使用此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 > 

答案 1 :(得分:3)

您可以使用字符串作为范围来调用String原型拆分函数以避免警告:

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("");