JSLint消息:未使用的变量

The*_*irl 80 javascript jquery jslint

如果JSLint在这种情况下抱怨"i"是一个未使用的变量,我该怎么办:

var items = "<option selected></option>";
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
Run Code Online (Sandbox Code Playgroud)

(i,item)是参数的必需顺序,我只使用"item".

除了容忍未使用的变量或重写$ .each以使用索引之外还有其他解决方案吗?我不想做这两种解决方案吗?

提前致谢.

更新:我感谢所有的建议,但这段代码只是一个例子,向您展示我的意思,我有兴趣看到一个通用的解决方案,如果有的话.谢谢.

nic*_*ckf 79

尝试:

var items = "<option selected></option>";
/*jslint unparam: true*/
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
/*jslint unparam: false*/  // so that you still get warnings from other functions
Run Code Online (Sandbox Code Playgroud)

  • 既然你没有使用i而你正在使用jQuery的迭代器迭代一个对象数组,你可以使用"this":`$ .each([{a:0},{a:1},{a:2 },{a:3}],function(){console.log(this.a)})` (4认同)
  • 这是最好的方法!/*jslint unparam:true*/ (3认同)
  • JSLint不再支持`unparam`.相反,它提供了下面答案中描述的新`ignore`关键字. (2认同)

PuZ*_*ucK 24

我认为这必须是新的:http://www.jslint.com/help.html

"JSLint引入了一个新的保留字:ignore"

所以上面简单地说:

$.each(data, function (ignore, item) {
Run Code Online (Sandbox Code Playgroud)

我=>忽略......太容易了.其余的代码可以保持不变,浏览器很高兴并且JSLint很高兴


早些时候(错误的)回答:

要安抚我需要使用的JsLint和浏览器:

function (d, i) {
        if (undefined !== win.undefined) {
            undefined(d);
        }
        return (i);
}
Run Code Online (Sandbox Code Playgroud)

由于undefined不是函数,浏览器在"undefined(d)"上崩溃了.因此,如果我们在浏览器中,"undefined!== win.undefined"会跳过该行.

  • 如果相同的函数具有多个未使用的参数,则这种抑制警告的新"忽略"方式会中断. (13认同)