JSLint消息:未使用的变量
JSLint message: Unused variables
如果JSLint抱怨" I "在这种情况下是一个未使用的变量,我该怎么办:
var items = "<option selected></option>";
$.each(data, function (i, item) {
items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
(i, item)是参数的必需顺序,我只使用"item"。
除了允许使用未使用的变量或重写$。每个都使用索引,两个解决方案,我不希望这样做?
提前感谢。
更新:我感谢所有的建议,但这段代码只是一个例子,向你展示我的意思,我有兴趣看到一个一般的解决方案,如果有的话。谢谢。
尝试:
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) {
i => ignore…太容易了。其余的代码可以保持不变,浏览器和JSLint都很高兴
之前的(错误)答案:
为了安抚JsLint和浏览器,我需要使用:
function (d, i) { if (undefined !== win.undefined) { undefined(d); } return (i); }
浏览器在"undefined(d)"时崩溃,因为undefined不是一个函数。所以"未定义!=="获胜。
你可以这样做:
var items = "<option selected></option>";
$.each(data, function () {
var item = arguments[1];
items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
…但如果你问我的话,我觉得这可能更糟。
以一种相当自文档化的方式摆脱警告的一种可能方法是导致使用未使用的变量,如下所示:
// 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>";
});
当然,现在您可能会遇到这样的情况:您将变量标记为未使用,但仍然在某处使用它。而且,这个方法可能过于冗长,具体取决于上下文。
这种方法的优点是它很精确。使用/*jslint unparam*/
可能过于宽泛。
如何使用void
明确表示您有意不使用该变量?
$.each(data, function (i, item, any, other, unused, vars) {
void(i, any, other, unused, vars);
items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
这在期望被覆盖的抽象函数中也很有用,但是您想要显示签名,或者在模拟中,您忽略了参数,但是想要匹配模拟函数的签名。
我将" I "重命名为"unused"。显然,它仍然会留下错误,但我在列表中看到它,并且知道我已经"检查"了该错误,并且没有问题。
在这种特殊情况下,转换数组/对象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('');
如果函数有多个未使用的参数,可以像这样使用"ignore"
function (ignoreFoo, ignoreBar, baz) {
}
必须以保留字"ignore" (ignore, ignoreFoo, ignoreBar,…)开头
- Ionic:AngularJS变量未使用$scope更新DOM
- 将方法从控制器注入到未使用右变量调用的指令
- 是否可以在另一个变量中使用未声明的变量
- JSHint 未使用的变量
- javascript中的变量未显示在使用innerHTML的html页面上
- 从一个函数传递到另一个函数的变量在使用jQuery的.post之后变得未定义
- 未使用JS闭包将变量传递给onClick函数
- 未使用的变量设置为什么
- 使用 self.port.on 时,火狐内容脚本中的变量未更新
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 变量 未定义 使用 alert()
- 使用参数调用函数的变量未定义
- 会话变量在使用后未更新
- 未使用返回值设置变量
- ReferenceError:变量未使用下划线模板定义
- 变量在使用$.get后最终未定义
- 检测并标记未使用的JS变量
- 变量未使用Javascript中的嵌套函数和getJSON更新
- Javascript 变量未使用进度条更新
- 防止jshint报告某个变量对于特定的局部变量未使用