我以为在cfscript中定义为函数的CFC方法默认是output=false,但是当我在cfcexplorer.cfc(浏览器直接打开CFC)中打开CFC时,它显示输出:已启用。
cfcexplorer.cfc 的错误?
我以为在cfscript中定义为函数的CFC方法默认是output=false,但是当我在cfcexplorer.cfc(浏览器直接打开CFC)中打开CFC时,它显示输出:已启用。
cfcexplorer.cfc 的错误?
简短的回答:没关系。
cfscript除非您从中显式调用 writeOutput() ,否则不会输出任何内容。这包括函数内的函数cfscript以及cfscript函数外的任何代码。
这与 CF 标签的语法不同,默认情况下,标签之间至少输出空格。在cfscript中,您编写的任何文本都将由 CFML 引擎编译。在 CF 标签中,您编写的任何文本都将写入输出缓冲区并发送到浏览器。
长答案:这与不指定输出属性相同。
cfscript块不输出任何东西。任何标签块,除非包含在 中cfsilent,否则会输出空格。是的,即使 cffunctions 也可以,但是如果输出属性设置为 false,则输出会被丢弃。
彼得鲍顿回答的本质是正确的。它既没有被包裹在cfsilent也没有cfoutput。输出不是被禁止的,但除非你明确地这样做,否则它不会发生。
您始终可以将基于标签的cffunction脚本与脚本结合起来,以实现两全其美。就像是...
<cffunction name="x" output="false" access="package">
<cfargument name="y" type="string" required="false" default="YY" />
<cfscript>
var someValue = y & "something";
writeOutput("test"); // this will not be written
return someValue;
</cfscript>
</cffunction>
这使您可以在标记上指定输出和访问权限,cffunction并允许参数是可选的(您不能通过cfscript函数执行此操作),然后用 cfscript 填充正文,包括 var 语句和函数返回。
当然,对于那个函数,如果你去掉这个output属性或者把它改成true,它会test在返回之前输出“ ”。
cfscript 函数是一只奇怪的猴子。他们两者兼而有之。您不能指定它们为 output="false",但在您使用 writeOutput() 之前它们是,但 cfcexplorer 将它们报告为 output="true"。这是一个奇怪的问题,我认为 cfml 咨询委员会正在研究。
我并不完全确定,但我的猜测是脚本函数cffunction在这方面与标签相同 - 因为默认值不是truenor false。
设置outputa 的属性cffunction,情况如下:
true相当于被包裹的函数cfoutput。false相当于被包裹的函数cfsilent。cfoutput也不包裹的标准代码cfsilent。但是,我几乎从不使用cfscript,实际上可能并非如此 - 我们必须等待其他人出现并确认或纠正这一点。