当我在cfoutput中调用函数时,为什么ColdFusion会添加空格?

Kip*_*Kip 17 coldfusion whitespace

如果我在ColdFusion中做这样的事情:

<cfoutput>foo="#foo()#"</cfoutput>
Run Code Online (Sandbox Code Playgroud)

生成的HTML前面有一个空格:

foo=" BAR"
Run Code Online (Sandbox Code Playgroud)

但是,如果它不是函数调用,它可以正常工作,即:

<cfset fooOut=foo() />
<cfoutput>foo="#fooOut#"</cfoutput>
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

foo="BAR"
Run Code Online (Sandbox Code Playgroud)

这个额外的空间来自哪里,我能做些什么呢?


编辑为了澄清,空间不在我的foo函数返回的值中:

<cffunction name="foo" access="public" returntype="string">
  <cfreturn "BAR" />
</cffunction>
Run Code Online (Sandbox Code Playgroud)

但我也发现内置函数不会发生这种情况,即:

<cfoutput>"#UCase("bar")#"</cfoutput>
Run Code Online (Sandbox Code Playgroud)

打印:

"BAR"
Run Code Online (Sandbox Code Playgroud)

但是,如果我将函数的输出传递给内置函数(这部分对我来说没有意义),确实会发生这种情况.即:

<cfoutput>"#UCase(foo())#"</cfoutput>
Run Code Online (Sandbox Code Playgroud)

打印:

" BAR"
Run Code Online (Sandbox Code Playgroud)

Hen*_*nry 28

确保将输出属性定义为false.

<cfcomponent output="false">

  <cffunction name="foo" access="public" returntype="string" output="false">
    <cfreturn "BAR">
  </cffunction>

</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

或者,以cfscript样式执行,并且不会引入额外的空间.

function foo()
{
  return "BAR";
}
Run Code Online (Sandbox Code Playgroud)