If statement cfscript/Odd行为中IF块内的coldfusion continue关键字
有没有人注意到Continue这个词的这种奇怪行为。当在If语句中使用时,它似乎会杀死模板中的所有以下代码 我在CF和Lucee中用 例如: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;//似
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>