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