Буквенная запись JS Lint Array с разделением строк - PullRequest
6 голосов
/ 13 февраля 2012

Я знаю, что 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 ]

4 голосов
/ 13 февраля 2012

Вот ваш массив в буквенном обозначении массива:

[ '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 > 
3 голосов
/ 24 февраля 2012

Вы можете вызвать функцию разделения прототипа 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("");
...