函数外部的Coldfusion局部作用域?
函数外部定义的局部作用域究竟是什么 考虑以下代码:函数外部的Coldfusion局部作用域?,coldfusion,scope,coldfusion-9,Coldfusion,Scope,Coldfusion 9,函数外部定义的局部作用域究竟是什么 考虑以下代码: <cfscript> local.madVar2 = "Local scope variable"; function madness() { var madVar = "madness variable"; madVar2 = "madness two variable"; writeOutput("local: <BR>"); wr
<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>
将产生以下输出:
本地范围仅在函数内定义,不应在函数外使用 函数外部定义的变量,默认为
变量
范围
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
当您引用在函数外部初始化的local.madVar2
变量时,实际上是指variables
范围内的local.madVar2
,即变量madVar2
存储在名为local
的结构中,该结构存储在variables
范围内
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
因此,基本上,在适当的范围内,您的代码被视为:
writeOutput("variables.local.madVar2: <BR>");
writeDump(variables.local.madVar2);
您将看到变量是如何进入作用域的
我不想费心费力地浏览你的迟钝的repo case(提示:即使在repo case中,也要使用有意义的变量名。特别是在repo case中,因为你想让其他人阅读),但是函数外没有
local
作用域,所以当你设置local.madVar2
,实际上,您正在设置变量.local.madVar2
。你所看到的能证明这一点吗?想做一个更清晰的复制吗?ColdFusion是一种将(.)点符号中的变量自动隐式赋值给结构的方法。
var madVar = "madness variable";
madVar2 = "madness two variable";
writeDump(variables);
.....