协助需要解决jslint错误

时间:2011-07-22 22:33:29

标签: javascript jquery jslint jshint

我目前正在针对我的网络应用程序中的javascript运行JSLint,并收到一些我需要帮助才能解决的错误。

一个。我得到的第一个错误是:JS Lint:未使用的变量'n'。

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

湾我在自动执行的函数中声明了我所有的javascript:

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

上述模式可以保护$免于与其他JavaScript库冲突,并保护undefined不被重新定义。但是我从中得到了这些错误:

JS Lint:期望一个标识符,而是看到'undefined'(保留字)。 JS Lint:未使用的变量'undefined'。

℃。 JS Lint:未转义' - '。

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

d。 JS Lint:键入混淆:'printer-':string和'(':number。

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

我遇到很多类型混淆的错误,有时会出现数字,整数和其他数据类型。有什么想法,我怎么能防止得到这些?

即JS Lint:不安全的'^'。

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

F。 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 个答案:

答案 0 :(得分:3)

A。)见:http://api.jquery.com/jQuery.each/

你可以使用:

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

B。)如果你实际上没有使用“未定义”,你就不会保护它免受任何伤害

C。)我不会打扰正则表达式lol编辑:也许它想要[A-Z0-9\-]

D。)您将字符串与数字连接起来。请尝试使用'string' + Date.getTime().toString()

另请参阅JSLint Type Confusion: function and object with jQuery .css()类型混淆的内容,有些奇怪之处我不同意

E。)我再也不会尝试正则表达式编辑:这是一个相同的问题:JSLint "insecure ^" in regular expression

F。)如果你可以在循环之外创建一个函数,然后在循环中使用它(只要你做得好),这是一个显着的性能提升。

答案 1 :(得分:1)

我看到其他人已经回答了,所以我至少会尝试c)

  

℃。 JS Lint:Unescaped' - '。

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

℃。在 - 9-+-

之前添加反斜杠

抱歉,对于E)无法帮助你,正则表达式对我来说没问题。