在循环中,以下内容将par.fval
添加到this.filters
以及par.T
开头的所有内容:
<cfset par.T = this.filters />
<cfset ArrayAppend(par.T[this.name],par.fval)/>
如果最初定义了所有变量,并且par.fval
随每次迭代而变化:
<cfloop ...>
<cfdump var="#this.filters#"/>
<cfset par.T = this.filters />
<cfset ArrayAppend(par.T[this.name],par.fval)/>
</cfloop>
将为每次迭代转储this.filters
,并附加最后一个值par.fval
。
我试图找出原因,因为我假设ColdFusion会将par.T
覆盖为一个全新的变量。
将其缩小以删除逻辑:
filtersA:
<cfdump var="#this.filters#">
<cfset par.T = #this.filters# />
<cfset ArrayAppend(par.T[this.name],par.fval)/>
filtersB:
<cfdump var="#this.filters#">
将显示par.fval
已在该附加语句中附加到this.filters
。因此无论出于何种原因,par.T
似乎不会成为自己的变量,而是对this
的内存空间的引用。