Краткий ответ на ваш вопрос: нет, вероятно, вы не столкнетесь с проблемами, пытаясь это сделать. Вне контекста UDF (даже внутри CFC) оператор set с незаданной областью подразумевает область действия переменных.
Кроме того, в CFC область действия переменных доступна для всех его функций; это своего рода глобальная область видимости внутри этого CFC - аналогично области видимости «this», за исключением того, что область видимости переменных похожа на «частные» переменные, тогда как область видимости this похожа на публичные переменные.
Чтобы проверить это, создайте test.cfc:
<cfcomponent>
<cfset foo = "bar" />
<cffunction name="dumpit" output="true">
<cfdump var="#variables#" label="cfc variables scope">
<cfdump var="#this#" label="cfc this scope">
</cffunction>
</cfcomponent>
и страница для проверки, test.cfm:
<cfset createObject("component", "test").dumpit() />
И результаты будут:
![image](https://i.stack.imgur.com/LSoL6.png)
Now, to address another problem I see in your example code...
In CF, all User Defined Functions have a special un-named scope commonly referred to as the "var" scope. If you do the following inside a UDF:
Then you are telling CF to put that variable into the var scope.
To compound things a bit, you can run into problems (variable values changing when you weren't expecting them to) when you are not using the var scope in your inline UDFs.
So the rule of thumb is to always, Always, ALWAYS, ALWAYS var-scope your function-internal variables (including query names). There is a tool called varScoper , который поможет вам найти переменные, которые должны быть в области видимости. В прошлый раз я проверил, что это не идеально, но это определенно начало.
Однако, это плохая идея ссылаться на (отображать / использовать) переменные без области (очевидно, исключая переменные в области видимости, поскольку вы не можете указать область для чтения) в CFC или даже на ваших стандартных страницах CFM. Начиная с CF7 было 9 областей, которые были проверены в определенном порядке, когда вы читаете переменную без указания области, первое совпадение выигрывает. С CF8 в этом списке может быть больше областей, я не проверял. Когда вы делаете это, вы рискуете получить значение из одной области видимости, когда ожидаете его от другой; это кошмар для отладки ... уверяю вас. ;)
Итак, вкратце: подразумевает область видимости переменной (на множестве) - не страшная идея (хотя я обычно задаю ее в любом случае); но вывод область видимости переменной (при чтении) вызывает проблемы.