JSLint消息:未使用的variables

如果JSLint在这种情况下抱怨“我”是一个未使用的variables,我该怎么办?

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

(我,项目)是所需的参数顺序,我只使用“项目”。

除了容忍未使用的variables或者重写$ .each来使用索引之外,还有其他解决scheme吗?我不希望这样做。

提前致谢。

更新:我欣赏所有的build议,但这个代码只是一个例子,向你展示我的意思,我有兴趣看到一个通用的解决scheme,如果有的话。 谢谢。

尝试:

 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 

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

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

所以上面简单地变成:

 $.each(data, function (ignore, item) { 

我忽略了…太容易了。 其余的代码可以保持不变,浏览器很高兴,JSLint很高兴


更早(错误)回答:

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

 function (d, i) { if (undefined !== win.undefined) { undefined(d); } return (i); } 

由于undefined不是一个函数,浏览器在“undefined(d)”上崩溃。 所以如果我们在浏览器中,“undefined!== win.undefined”会跳过这一行。

你可以这样做:

 var items = "<option selected></option>"; $.each(data, function () { var item = arguments[1]; items += "<option value='" + item.Value + "'>" + item.Text + "</option>"; }); 

…但如果你问我可能会更糟

以相当自我logging的方式摆脱警告的一种可能的方法是使未使用的variables得到使用,如下所示:

 // Utility function in project scope: function unusedVariables(/* Put all your deliberately unused variables here */) { // pass } // And then, later: var items = "<option selected></option>"; $.each(data, function (i, item) { unusedVariables(i); //< This is the new and magical line items += "<option value='" + item.Value + "'>" + item.Text + "</option>"; }); 

当然,现在你可以进入你将variables标记为未使用的情况,而你仍然在某个地方使用它。 而且,这个方法可能太冗长了,取决于上下文。

这种方法具有精确的优点。 使用/*jslint unparam*/可能太宽泛。

如何使用void来明确你有意不使用variables?

 $.each(data, function (i, item, any, other, unused, vars) { void(i, any, other, unused, vars); items += "<option value='" + item.Value + "'>" + item.Text + "</option>"; }); 

这对于希望被覆盖的抽象函数也是有用的,但是你想在哪里显示签名,或者在模拟中,你忽略了参数,但是想要匹配模拟函数的签名。

我将“我”重命名为“未使用”。 它仍然显然是错误的,但我在列表中看到它,并知道我已经“检查”错误,并没有问题。

在转换数组/对象的特殊情况下, http://api.jquery.com/jquery.map/ (或http://api.jquery.com/map/ ?)是一个选项。

 var items = "<option selected></option>" + $.map(data, function (item) { return "<option value='" + item.Value + "'>" + item.Text + "</option>"; }).get().join(''); 

如果函数有多个未使用的参数,可以使用如下的“忽略”

 function (ignoreFoo, ignoreBar, baz) { } 

它必须简单地以保留字“忽略”(ignore,ignoreFoo,ignoreBar,…)开头。