我认为CFC中定义为cfscript函数的方法默认是output = false,但是当我在cfcexplorer.cfc中打开CFC(浏览器直接到CFC)时,它表示输出:启用。
cfcexplorer.cfc的Bug?
答案 0 :(得分:17)
简短回答: 没关系。
cfscript
除非您显式调用writeOutput(),否则不会输出任何内容。这包括cfscript
中的函数以及函数外的任何cfscript
代码。
这与CF标签的语法不同,默认情况下,它会在标签之间输出至少空格。在cfscript
中,您编写的任何文本都将由CFML引擎编译。在CF标签中,您编写的任何文本都将写入输出缓冲区并发送到浏览器。
答案很长: 它与未指定输出属性相同。
cfscript
块不输出任何内容。除非包含在cfsilent
中,否则任何标记块都会输出空格,如果没有别的话。是的,即使是cffunction,但如果output属性设置为false,则会丢弃输出。
Peter Boughton的答案的本质是正确的。它既不包含在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语句和函数return。
当然,对于该功能,如果您删除output
属性或将其更改为true
,则将 输出“test
”,然后再返回。
答案 1 :(得分:4)
cfscript函数是一个奇怪的猴子。他们都是两种。您不能指定它们是output =“false”,但它们直到您使用writeOutput(),但它们由cfcexplorer报告为output =“true”。这是一个奇怪的问题,我认为cfml咨询委员会现在正在研究。
答案 2 :(得分:1)
我不完全确定,但我的猜测是脚本功能在这方面与cffunction
标签相同 - 默认情况下既不是true
也不是false
。
为output
设置cffunction
属性,以下是这种情况:
true
相当于cfoutput
中包含的函数。false
相当于cfsilent
中包含的函数。cfoutput
也不包含cfsilent
的标准代码。但是,我几乎从不使用cfscript
,实际情况可能并非如此 - 我们将不得不等待其他人出现并确认或更正此事。