在我的浏览器中运行以下函数时,在整个函数执行过程中,删除的变量,行变量和rownumber变量仍未定义:
private action(value) {
var deleted = false;
if (value == 3) {
for (var row in this.binaryObj) {
for (var i = 0; i < this.binaryObj[row].length; i++) {
if (deleted) {
break;
}
this.binaryObj[row].sort();
if (this.binaryObj[row][i] + this.binaryObj[row][i + 1] === value) {
var rowNumber = $.inArray(this.binaryObj[row][i], this.binaryObj[row])
this.cleanField(rowNumber, value);
deleted = true;
break;
}
}
if (deleted) {
break;
}
}
}
else {
for (var row in this.binaryObj) {
for (var i = 0; i < this.binaryObj[row].length && !deleted; i++) {
if (this.binaryObj[row][i] === value) {
var rowNumber = $.inArray(this.binaryObj[row][i], this.binaryObj[row])
this.cleanField(rowNumber, value);
deleted = true;
break;
}
}
if (deleted) {
break;
}
}
};
};
我不确定为什么会发生这种情况。删除的变量在函数的开头清楚地声明。谁知道什么可能是一个问题? 请注意,该函数是typescript文件的一部分,您可以看到我也使用JQuery(不确定其中一个是否可能是问题?)
this.binaryObj实际上被调试器注意到:
Object {R1: Array[0], R2: Array[2], R3: Array[2], R4: Array[3]}