If statement cfscript/Odd行为中IF块内的coldfusion continue关键字

If statement cfscript/Odd行为中IF块内的coldfusion continue关键字,if-statement,coldfusion,cfml,continue,If Statement,Coldfusion,Cfml,Continue,有没有人注意到Continue这个词的这种奇怪行为。当在If语句中使用时,它似乎会杀死模板中的所有以下代码 我在CF和Lucee中用 例如: writeoutput('test1,loop'); 对于(x=0;x>5;x++){ 写输出(‘要继续吗?’); 继续; 注销输出(“在内部继续”); } writeoutput('Out of loop..'); writeoutput('test2,如果'); oURL=真; 如果(oURL){ 写输出(‘要继续吗?’); continue;//似

有没有人注意到Continue这个词的这种奇怪行为。当在If语句中使用时,它似乎会杀死模板中的所有以下代码

我在CF和Lucee中用

例如:


writeoutput('test1,loop
'); 对于(x=0;x>5;x++){ 写输出(‘要继续吗?’); 继续; 注销输出(“在内部继续”); } writeoutput('Out of loop..

'); writeoutput('test2,如果
'); oURL=真; 如果(oURL){ 写输出(‘要继续吗?’); continue;//似乎会杀死以下所有代码 注销输出(“在内部继续”); } writeoutput('out of If..'); 写输出('end'); 对于(x=0;x>5;x++){ writeoutput('循环:'&x); }
我可以想象,如果在循环构造之外使用,它会杀死下面的所有代码

cfcontinue
的思想是跳过执行命令后的所有代码,并在循环顶部恢复处理


我猜发生的情况是,cfml引擎在到达
cfcontinue
命令后停止执行代码,并且正在寻找可以恢复处理的位置,如果在循环之外,这是未知的。

Continue将中止对循环内其余代码的处理。对我来说似乎工作正常。Docs@Scp-FWIW,我确实看到了相同的结果,但是。。我很好奇,为什么在if语句中使用
continue
,而不是重新构造if块?通常,continue设计用于处理循环。不确定在循环外部使用时预期的行为是什么……我认为,使用
继续
中断
外部循环将像
中止
一样工作,因为没有下一个循环要去。(Edit)@SCP-此外,如果您在CFML中尝试等效的if语句,CF将抛出上下文验证错误“标记必须嵌套在cfloop标记中”。因此,听起来像是真正的问题,如果您愿意,也可能是错误,就是cfscript没有警告命令的使用方式不是预期的或不受支持的。
<cfscript>
    writeoutput('test1, loop<br>');
    for (x = 0; x > 5; x++) {
        writeoutput(' gonna continue?');
        continue;
        writeoutput('continued within');
    }
    writeoutput('Out of loop..<br><br>');
    writeoutput('test2, if<br>');
    oURL = true;
    if (oURL) {
        writeoutput(' gonna continue?');
        continue; // seems to kill all following code
        writeoutput('continued within');
    }
    writeoutput(' out of If..');
    writeoutput(' end');
    for (x = 0; x > 5; x++) {
        writeoutput('loop:' & x);
    }
</cfscript>