在函数之外定义的局部范围究竟是什么?
请考虑以下代码:
<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>
通过添加var
关键字来更改madVar2分配,如下所示:
function madness() {
var madVar = "madness variable";
var madVar2 = "madness two variable";
将产生此输出:
答案 0 :(得分:8)
Local
范围仅在函数中定义,不应在其外部使用。
在函数外定义的变量,默认为variables
范围。
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
当您引用local.madVar2
变量时,该变量已在函数外部初始化,您实际上是指local.madVar2
范围内的variables
,即变量madVar2
存储在名为local
的结构中,该结构存储在variables
范围内。
基本上,在适当的范围内,您的代码将被视为:
writeOutput("variables.local.madVar2: <BR>");
writeDump(variables.local.madVar2);
在将函数内部的变量定义为:
之后,尝试转储variables
范围
var madVar = "madness variable";
madVar2 = "madness two variable";
writeDump(variables);
.....
您将看到变量如何落入范围。