そのため、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>
何が起こっているのですか?