我目前正在针对我的网络应用程序中的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
};
}
}
答案 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)无法帮助你,正则表达式对我来说没问题。