我以为在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
在这方面与标签相同 - 因为默认值不是true
nor false
。
设置output
a 的属性cffunction
,情况如下:
true
相当于被包裹的函数cfoutput
。false
相当于被包裹的函数cfsilent
。cfoutput
也不包裹的标准代码cfsilent
。但是,我几乎从不使用cfscript
,实际上可能并非如此 - 我们必须等待其他人出现并确认或纠正这一点。