我正在尝试在第一个if
语句的第二个if
语句中重用相同的变量,当我发出警报时,我收到警告我的变量为undefined
它
如何让这个变量在第二个if
语句中保留其值?我只是为你复制部分代码,看看我在说什么。我尝试在foundRangeStart
的第二个if语句中使用ESNEnd
,该语句之前用于if
的第一个ESNStart
语句中。
为什么foundRangeStart
在第二个undefined
声明中设置为if
?
if ($(this).attr("id") == "ESNStart") {
var esnStart = [];
esnStart[0] = esn_to_num(enteredData);
var item;
var rangesFoundStart = [];
rangesFoundStart[0] = -1; // Set defaut value as -1 for the corresponding entry in the "rangesFound" array
for (var x in ranges) { // Inner loop over items in ranges object
item = esnStart[0];
if (item >= ranges[x].min && item <= ranges[x].max) {
rangesFoundStart[0] = x;
}
}
if (rangesFoundStart[0] >= 0) {
foundRangeStart = rangesFoundStart[0];
}
if (foundRangeStart && foundRangeStart >= 0) {
$("#STxModel").val(ranges[foundRangeStart].StxName);
$("#TxSpacing").val(ranges[foundRangeStart].rtumodel);
}
}
if ($(this).attr("id") == "ESNEnd") {
var esnEnd = [];
esnEnd[0] = esn_to_num(enteredData);
var item;
var foundRangeEnd;
var rangesFound = [];
rangesFound[0] = -1; // Set defaut value as -1 for the corresponding entry in the rangesFound array
for (var x in ranges) { // Inner loop over items in ranges object
item = esnEnd[0];
if (item >= ranges[x].min && item <= ranges[x].max) {
if (rangesFound[x] == foundRangeStart) {
rangesFound[0] = x;
var foundone = rangesFound[0] = x;
alert(foundone + foundRangeStart);
}
} else {
alert(alert_total);
}
}
}
答案 0 :(得分:1)
因为在该控制路径中,尚未设置foundRangeStart
。
它似乎只在第一个ESNStart
块中设置;
if ( rangesFoundStart[0] >= 0 ) {
foundRangeStart = rangesFoundStart[0];
}
但如果此语句不等于true
;
if ($(this).attr("id") == "ESNStart") { ... }
答案 1 :(得分:1)
我正在尝试在ESNEnd的第二个if语句中使用
foundRangeStart
,该语句以前在ESNStart的第一个if语句中使用
不,它没有在第一个if语句中使用。如果执行第二个,则第一个不执行 - 两个条件$(this).attr("id") == "ESNStart"
和$(this).attr("id") == "ESNEnd"
是互斥的。
答案 2 :(得分:0)
if ( rangesFoundStart[0] >= 0 ) {
foundRangeStart = rangesFoundStart[0];
}
您在条件中声明变量。如果rangesFoundStart [0]小于0怎么办?然后变量将永远不会被声明。
您可以通过在条件之外声明foundRangeStart来解决此问题。
var rangesFoundStart = [];
var foundRangeStart;
rangesFoundStart[0] = -1; // Set defaut value as -1 for the corresponding entry in the "rangesFound" array
for (var x in ranges) { // Inner loop over items in ranges object
item = esnStart[0];
if (item >= ranges[x].min && item <= ranges[x].max) {
rangesFoundStart[0] = x;
}
}
if ( rangesFoundStart[0] >= 0 ) {
foundRangeStart = rangesFoundStart[0];
}