cfscript中IF块内的coldfusion continue关键字/奇怪的行为
Posted
技术标签:
【中文标题】cfscript中IF块内的coldfusion continue关键字/奇怪的行为【英文标题】:coldfusion continue keyword within IF block in cfscript / Odd behaviour 【发布时间】:2016-04-26 21:57:30 【问题描述】:有没有人注意到“继续”一词的这种奇怪行为。在 If 语句中使用时,它似乎会杀死模板中的所有以下代码。
我在 CF 和 Lucee 中使用http://cflive.net/对此进行了测试
例如:
<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>
【问题讨论】:
Continue 将中止循环内其余代码的处理。对我来说似乎工作正常。文档help.adobe.com/en_US/ColdFusion/9.0/Developing/… @Scp - FWIW,我确实看到了相同的结果,但是.. 很好奇,为什么在 if 语句中使用continue
,而不是重组 if 块?通常 continue 被设计为使用循环。不确定在循环外使用时的预期行为是什么......
我认为,使用continue
或break
外循环将像abort
一样工作,因为没有下一个循环可以去。
【参考方案1】:
我想如果在循环结构之外使用它会杀死所有以下代码。
cfcontinue
的想法是跳过执行命令之后的所有代码,并在循环顶部恢复处理。
我猜发生的情况是 cfml 引擎在到达 cfcontinue
命令后停止执行代码,并正在寻找它可以在哪里恢复处理,如果在循环之外这是未知的。
【讨论】:
(编辑)@SCP - 此外,如果您在 CFML 中尝试等效的 if 语句,CF 会抛出上下文验证错误“标签必须嵌套在 cfloop 标签内”。所以这听起来像真正的问题,或者如果你愿意的话,错误是 cfscript 没有警告该命令正在以非预期或不支持的方式使用。以上是关于cfscript中IF块内的coldfusion continue关键字/奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
简单的 ColdFusion 脚本在 IE 中有效,但在 Firefox 中无效?