помощь требует устранения ошибок jslint - PullRequest
3 голосов
/ 23 июля 2011

В настоящее время я использую JSLint для javascript в моем веб-приложении и получаю сообщения об ошибках, которые мне требуются при разрешении.

а. Первая ошибка, которую я получаю: JS Lint: Unused Variable 'n'.

 $.each(collection, function (n, item) {
                var temp = item.Id;
        // do further processing
    });

б. У меня весь мой javascript объявлен в самозапускающейся функции, например:

(function ($, undefined) {
// further javascript code
}
(jQuery));

Приведенный выше шаблон может защитить $ от конфликта с другими библиотеками JavaScript, а также защитить undefined от переопределения. Однако я получаю от этого следующие ошибки:

JS Lint: ожидал идентификатор и вместо этого увидел «неопределенное» (зарезервированное слово). JS Lint: неиспользуемая переменная 'undefined'.

с. JS Lint: Unescaped '-'.

 if (value.match(/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i)) {
    return true;
 }

д. JS Lint: введите путаницу: 'printer-': string и '(': number.

  var frameName = "printer-" + new Date().getTime();

Я получаю многочисленные ошибки путаницы типов, иногда с числами, целыми числами и другими типами данных. Любая идея о том, как я могу предотвратить их получение?

е. JS Lint: Небезопасный '^'.

var value = value.replace(/[^\d\.,\-]/gi, '');

е. JS Lint: не создавать функции внутри цикла.

for (i = 0, l = txts.length; i < l; i += 1) {
        if (/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) {
            var func = function () {
                //do some processing
            };
        }
    }

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

A.) См .: http://api.jquery.com/jQuery.each/

, вы можете использовать:

$.each(collection, function() {
    doSomething(this); // this refers to the current iteration
});

B.) Если вы на самом деле не используете "undefined", вы не защищаете его отчто-нибудь

C.) Я не собираюсь беспокоиться о регулярных выражениях LOL РЕДАКТИРОВАТЬ: Возможно, он хочет [A-Z0-9\-]

D.) Вы объединяете строку с номером.Попробуйте 'string' + Date.getTime().toString() вместо

См. Также Путаница типов JSLint: функция и объект с jQuery .css () для вещей путаницы типов, есть некоторые странности, с которыми я не согласен

E.) Опять же, я не собираюсь пытаться использовать регулярное выражение. РЕДАКТИРОВАТЬ: Вот такой же вопрос: JSLint "insecure ^" в регулярном выражении

F.) ЕслиВы можете создать свою функцию один раз за пределами цикла, а затем использовать ее внутри цикла (если вы делаете это хорошо), это значительно увеличивает производительность.

1 голос
/ 23 июля 2011

Я вижу, что другие уже ответили, так что я, по крайней мере, сделаю попытку для c)

c.JS Lint: Unescaped '-'.

if (value.match(/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i)) {
   return true;
}

C.Добавьте обратную косую черту перед - в 9- и +-

Извините, я не могу помочь вам с E), это регулярное выражение выглядит хорошо для меня.

...