Javascript 我的函数没有';t在for循环中不返回对象

Javascript 我的函数没有';t在for循环中不返回对象,javascript,Javascript,我创建了一个函数,该函数以XML字符串形式获取标记S的内部: '<C><P /><Z><S>[Grounds here]</S><D /><O /></Z></C>' 循环使i从1转到num-1。但是在循环中,如果(i==num),则有一个条件。此条件永远不会为真,因此程序永远不会到达return语句。如果函数中的程序流意味着从未到达return语句,那么函数只返回undefined。(

我创建了一个函数,该函数以XML字符串形式获取标记
S
的内部:

'<C><P /><Z><S>[Grounds here]</S><D /><O /></Z></C>'

循环使
i
1
转到
num-1
。但是在循环中,如果(i==num),则有一个条件
。此条件永远不会为真,因此程序永远不会到达
return
语句。如果函数中的程序流意味着从未到达
return
语句,那么函数只返回
undefined
。(这不是特定于javascript的-类似的规则适用于多种语言。)

相反,您可以将
return
语句移到循环之外

function readGround(num) {
    var grounds = stg.substr(stg.indexOf('<S>') + 3, stg.lastIndexOf('</S>')),
        gr;
    for (var i = 1; i < num; i++) {
        grounds = grounds.substr(grounds.indexOf('/>') + 2, grounds.length);
    }
    gr = grounds.substr(grounds.indexOf('<S') + 3, grounds.indexOf('/>'));
    var a = [stringBetween(gr, 'L="', '"'), stringBetween(gr, 'H="', '"'), stringBetween(gr, 'X="', '"'), stringBetween(gr, 'Y="', '"')];
    return {
        L: a[0],
        H: a[1],
        X: a[2],
        Y: a[3]
    };
}
函数读取范围(num){
var grounds=stg.substr(stg.indexOf(“”)+3,stg.lastIndexOf(“”)),
gr;
对于(变量i=1;i')+2,grounds.length);
}
gr=接地。substr(接地。索引(“”));
变量a=[stringBetween(gr,'L=“”,“”)、stringBetween(gr,'H=“”,“”)、stringBetween(gr,'X=“”,“”)、stringBetween(gr,'Y=“”,“)];
返回{
L:a[0],
H:a[1],
X:a[2],
Y:a[3]
};
}
(为了使代码正常工作,还必须对其他一些东西进行调整,例如
A
应从
gr
中的文本部分读取,而不是从较长的字符串
grounds


你为什么把所有的东西都放在一行?这几乎是不可读的…感谢编辑,有时我更喜欢保留一行。你能添加STG可能包含的内容的真实示例吗?你的循环在
I==NUM
之前停止,因此条件
I==NUM
永远不会满足,它也不会返回任何内容。是的,“从循环中的函数返回”这是完全不可能的,是JS的失败…>\uu>
function readGround(num) {
    var grounds = stg.substr(stg.indexOf('<S>') + 3, stg.lastIndexOf('</S>')),
        gr;
    for (var i = 1; i < num; i++) {
        grounds = grounds.substr(grounds.indexOf('/>') + 2, grounds.length);
    }
    gr = grounds.substr(grounds.indexOf('<S') + 3, grounds.indexOf('/>'));
    var a = [stringBetween(gr, 'L="', '"'), stringBetween(gr, 'H="', '"'), stringBetween(gr, 'X="', '"'), stringBetween(gr, 'Y="', '"')];
    return {
        L: a[0],
        H: a[1],
        X: a[2],
        Y: a[3]
    };
}