1 回答

TA貢獻1951條經驗 獲得超3個贊
只有在變量修改后執行 lambda(在您的情況下為函數參數)時,才能訪問修改后的閉包。在你的情況下,$.each應該立即執行 lambda,所以它不應該是一個問題。但是 ReSharper 不知道被調用的函數是否會立即執行傳遞的 lambda 或將其存儲以供以后執行,尤其是在具有動態類型的 JavaScript 中。所以它總是給出警告。
請注意,您找到的文章是指 C#,它建議的修復僅對 C# 有效。在 JS 中你不能通過 using 來解決問題var i1 = i,因為i1聲明的變量var會有一個函數作用域,而你需要它有一個塊作用域。因此,如果您可以使用 ECMAScript 2015,那么您可以使用let或const聲明具有塊作用域的變量,例如:
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();
let i1 = i;
$.each(record, function (key, value) {
data.push({
name: "Permissions[" + i1 + "]." + key,
value: value
});
});
}
添加回答
舉報