所以我在审查期间遇到了这段代码:
var permissions = $("#" + me.map.permissionsGridHtmlId).data("kendoGrid").dataSource.data();
var data = form.serializeArray();
for (var i = 0; i < permissions.length; i++) {
var record = permissions[i].toJSON();
$.each(record, function (key, value) {
data.push({
// ReSharper disable once ClosureOnModifiedVariable
name: "Permissions[" + i + "]." + key,
value: value
});
});
}
'// ReSharper disable' 评论让我停了下来。我试图调查它,发现了这个 - https://www.jetbrains.com/help/resharper/AccessToForEachVariableInClosure.html
但是,我尝试删除评论,然后按照该链接所说的那样,在范围内创建一个变量来存储值,但警告并没有消失。
此外,尽管有警告,但它的行为似乎符合设计 - 'i' 的值正确更改,最后,'data' 变量存储正确/预期的值。
所以,我的问题是......为什么 ReSharper 会对此发出警告?代码中是否存在实际问题,或者 ReSharper 中是否存在错误?如果是前者,我应该如何修复代码?如果是后者,这个警告是否正确(所以我们应该留下禁用评论)或者我应该将检查严重性更改为从不显示这个警告?
更新
对代码的以下更改使警告消失:
$.each(permissions, function (i, permission) {
$.each(permission.toJSON(), function (key, value) {
data.push({
name: "Permissions[" + i + "]." + key,
value: value
});
});
});
不过,当两个代码片段的行为相同时,我仍然想知道为什么会出现警告。
饮歌长啸
相关分类