2

所以,我遇到了一个奇怪的错误,我在 CF9 中无法弄清楚。它似乎是由在函数调用内部、if语句内部、循环内部使用结构文字引起的。删除这些变量中的任何一个,并且不会发生这种情况。

以下代码引发错误:

错误:Variable KEY is undefined.

<cffunction name="test">
    <cfreturn true>
</cffunction>

<cfset local.data = { first = "asdf" }>

<cfloop list="first" index="key">
    <cfif test({ name = local.data[key] })>
        <cfoutput>test</cfoutput>
    </cfif>
</cfloop>

为什么?如果我们将结构设置为一个变量,它就可以工作。如果我们不循环,它也可以正常工作。

<cffunction name="test">
    <cfreturn true>
</cffunction>

<cfset local.data = { first = "asdf" }>
<cfset key = "first">
<cfif test({ name = local.data[key] })>
    <cfoutput>test</cfoutput>
</cfif>

有什么想法吗?

4

1 回答 1

2

一旦你提出更好的问题,我会给出更好的答案;-)(根据我的评论告诉我们错误消息),但事实是 CF 对结构文字(和数组文字)表示法的实现已经被一长串的实现错误所困扰。我认为它们终于在 CF10 中得到了解决。

所以,稍微倾斜地回答你的问题:“发生了什么事?” ColdFusion 中的 Shonky 编码正在进行中。

解决方法是什么?当您遇到这些问题时,请改用传统的结构表示法(点表示法或关联数组表示法)。

恐怕没有比这更好的办法了。

还要查看错误库以查看您的特定案例是否已被记录,如果没有:记录一个新错误。

于 2012-12-21T21:05:03.157 回答