除了“THIS”之外,几乎所有范围都可以在 CFM 页面中找到。
CFM 页面中声明的非作用域变量可以直接调用,也可以使用 VARIABLES 作用域前缀调用。
例如:
<cfset varA = 'someValue'/>
也可以写成
<cfset VARIABLES.varA = 'something' />
据我所知,除非您创建一个单例(仅适用于 CFC)并将其置于应用程序范围内,否则您永远不会冒险与其他用户共享变量。如果不小心在 CFC 函数中正确地确定局部变量的范围,这也是有效的。
在 CFM 页面上,每个用户请求都有自己的处理线程,并且永远不会与其他用户请求交叉。因此,变量仅绑定到该特定请求的范围。
如果您希望所有请求页面的用户都使用变量,则可以将其放在 APPLICATION 范围内。
我不太明白你的第二个问题。如果您可以详细说明,也许我可以在我的答案中添加更多内容。
更新
此代码将帮助您回答 2 个问题。
<cfscript>
function a(){
_a = 20;
WriteOutput("Inside function:"&variables['_a']);
WriteOutput("Inside function:"&variables['_b']);
}
_b = 30;
a();
WriteOutput('outside function:'&variables['_a']);
</cfscript>
输出
内部功能:20
内部功能:30
外部功能:20