Rol*_*and 3 coldfusion scope coldfusion-9
在函数外部定义的局部范围究竟是什么?
请考虑以下代码:
<cfscript>
local.madVar2 = "Local scope variable";
function madness() {
var madVar = "madness variable";
madVar2 = "madness two variable";
writeOutput("local: <BR>");
writeDump(local);
writeOutput("========================================= <BR>");
writeOutput("local.madVar2: <BR>");
writeDump(local.madVar2);
writeOutput("<BR>========================================= <BR>");
writeOutput("madVar2: <BR>");
writeDump(madVar2);
writeOutput("<BR>========================================= <BR>");
writeOutput("variables.madVar2: <BR>");
writeDump(variables.madVar2);
writeOutput("<BR>========================================= <BR>");
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)

通过添加var关键字来更改madVar2分配,如下所示:
function madness() {
var madVar = "madness variable";
var madVar2 = "madness two variable";
Run Code Online (Sandbox Code Playgroud)
将产生此输出:

的Local范围仅函数中定义,并且不应被它之外使用.
在函数外定义的变量,默认为variables范围.
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
Run Code Online (Sandbox Code Playgroud)
当您参考local.madVar2变量,这是你基本上指的是功能外初始化local.madVar2的variables范围,即变量madVar2被储存在名为结构内部local存储在该variables范围内.
基本上,在适当的范围内,您的代码被视为:
writeOutput("variables.local.madVar2: <BR>");
writeDump(variables.local.madVar2);
Run Code Online (Sandbox Code Playgroud)
variables在定义函数内部的变量后,尝试转储范围:
var madVar = "madness variable";
madVar2 = "madness two variable";
writeDump(variables);
.....
Run Code Online (Sandbox Code Playgroud)
您将看到变量如何落入范围.
