2016-04-26 20 views
1

有没有人注意到Continue这个奇怪的行为。在If语句中使用时,似乎会杀死模板中的所有后续代码。coldfusion在cfscript中的IF块中继续关键字/奇怪的行为

<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> 
+1

继续将中止处理循环内的其余代码。似乎正在对我工作正常。 Docs http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0a0e0-7fdf.html#WSc3ff6d0ea77859461172e0811cbec0a0e0-7fe7 –

+3

@Scp - FWIW,我确实看到了相同的结果,但是..好奇,为什么使用'继续'在if语句中,而不是重构if块?通常继续被设计为与循环一起工作。不知道在循环之外使用时期望的行为是什么...... – Leigh

+1

我认为,使用'continue'或'break' out side循环将会像'abort'一样工作,因为没有下一个循环可用。 – RRK

回答

1

我会想象它杀死所有下面的代码,如果使用循环结构之外:

我在CF和Lucee与http://cflive.net/

如测试这一点。

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

我猜想发生了什么事是,cfml引擎一旦到达cfcontinue命令就停止执行代码,并且正在寻找它可以恢复处理的位置,如果在循环之外,则该处理是未知的。

+0

(编辑)@SCP - 另外,如果你在CFML中尝试等价的if语句,CF会抛出一个上下文验证错误“标签必须嵌套在cfloop标签内”。所以这听起来像是真正的问题,或者如果你愿意的话,是因为cfscript并没有警告命令的使用方式不是打算或支持的。 – Leigh