3

我目前正在针对我的 Web 应用程序中的 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:需要一个标识符,但看到的是“未定义”(保留字)。JS Lint:未使用的变量“未定义”。

C。JS Lint:未转义的“-”。

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

d。JS Lint:类型混淆:'printer-':字符串和'(':数字。

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

我收到很多类型混淆的错误,有时是数字、整数和其他数据类型。关于如何防止得到这些的任何想法?

e. 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
            };
        }
    }
4

2 回答 2

3

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

您可以使用:

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

B.)如果您实际上没有使用“未定义”,那么您就没有保护它不受任何影响

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

D.)您正在将字符串与数字连接起来。试试'string' + Date.getTime().toString()

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

E.) 同样,我不打算尝试正则表达式 编辑:这是一个相同的问题:JSLint "insecure ^" in regular expression

F.) 如果您可以在循环外创建一次函数,然后在循环内使用它(只要您做得好),那将显着提高性能。

于 2011-07-22T22:53:00.053 回答
1

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

C。JS Lint:未转义的“-”。

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

9-C. 在 - in和之前添加反斜杠+-

抱歉,E) 无法为您提供帮助,我觉得该正则表达式没问题。

于 2011-07-22T22:55:44.047 回答