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,…)开头。