помощь в устранении ошибок jslint

Я получаю некоторые ошибки через jslint, с которыми мне нужна помощь:

  1. Плохой побег:

    replace('/[^a-zA-Z0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿\s+{0}]/g', '')

  2. Пустой блок:

    $('#myElement').keydown(функция (событие) { if (allowAlphaNumeric(событие)) { } });

  3. Неожиданное использование '|'

    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);

У кого-нибудь есть идеи, как мне их решить?


person amateur    schedule 28.07.2011    source источник


Ответы (1)


Плохой побег:

Вы даете replace строку, содержащую литерал регулярного выражения. Вы почти наверняка захотите просто сделать его литералом регулярного выражения:

replace(/[^a-zA-Z0-9ñÑáÁéÉíÍóÓúÚüÜ¡¿\s+{0}]/g, '')

Это, безусловно, тот случай, если replace, о котором идет речь, это String#replace, что я предполагаю. Если это что-то другое (было бы удобно это знать) и вы действительно хотите, чтобы это была строка, просто убедитесь, что вы удваиваете все символы обратной косой черты в строке — \s не является допустимым экранированием строки, это регулярное выражение построить. Таким образом, вы бы хотели, чтобы \\s было там, чтобы строка заканчивалась \, за которой следовал s. Но опять же, я думаю, вам нужен литерал (там, где вы не стали бы этого делать).

Пустой блок:

Поместите что-нибудь в блок:

$('#myElement').keydown(function (event) { if (allowAlphaNumeric(event)) { } });
//                                                  here -----------------^

Неожиданное использование '|'

return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);

Это выглядит хорошо для меня синтаксически (логически, см. примечание ниже), так как вам действительно нужен побитовый оператор. Просто jslint не понимает ваших намерений.

Но разве x | 0 не то же самое, что x? Не могли бы вы просто удалить это?

person T.J. Crowder    schedule 28.07.2011