Извините, это лучшее название, которое я могу придумать.ColdFusion 10 не вызывает никаких ошибок, но ColdFusion 8 делает
Я надеюсь, что кто-то здесь может дать мне объяснение этому поведению. Мой работодатель просто решил обновить CF 8 до CF 10 (да, я знаю). Однако некоторые из серверов находятся на CF 10, а некоторые на CF 8. Я знаю, что это не должно быть таким; но это не под моим контролем. В любом случае, у меня есть следующие коды. Он ломается в CF 8, но работает в CF 10 без ошибок. В CF 8 говорится, что элемент a не определен в локальном, что ожидается, и у меня нет проблемы с этим. В конце концов, local объявляется дважды, а a не определяется во втором.
Но в CF 10 ошибки не генерируются, а local.a возвращается функцией. Для меня CF 10 должен вызывать ошибку либо потому, что по той же причине, почему CF 8 терпит неудачу, либо потому, что «местный» является зарезервированным словом в CF 10 («local» был введен в CF 9). Почему CF 10 не вызывает никаких ошибок?
<cfcomponent name="myComponent">
<cffunction name="myFunction" returntype="Numeric">
<cfscript>
var local = StructNew();
local.a = 1;
</cfscript>
<cfset local = StructNew()>
<cfif local.a is 0>
<!--- do something --->
</cfif>
<cfreturn local.a>
</cffunction>
</cfcomponent>
Я согласен с тем, что CF 10 должен выбросить ошибку, но я думаю, что это должно вызвать другую ошибку. Я думаю, что это вызовет ошибку при создаваемой переменной. ColdFusion 9 представила область «local», и я думаю, что происходит то, что на самом деле создается переменная с именем «local», но при попытке установить «local.a» она устанавливается в области «local» а не переменной с именем «local». Поэтому 'local.a' на самом деле существует, но он находится в области« local », а не в переменной« local ». Имеют смысл? –
Также обратите внимание, что во второй раз, когда вы устанавливаете 'local', нет' var', поэтому переменная не будет локальной для этой функции. –
Как я понимаю, как только вы var'd переменную один раз, она локальна для функции независимо от того, сколько раз она меняет ее значение. –