函数之外的 Coldfusion 本地范围?
Coldfusion local scope outside of a function?
函数外部定义的局部作用域到底是什么?
考虑以下代码:
<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";
将产生此输出:
Local
范围仅在函数内定义,不应在函数外使用。
在函数外定义的变量,默认在variables
范围内。
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
当您引用 local.madVar2
变量时,它是在函数外部初始化的,您实际上是指 variables
范围内的 local.madVar2
,即变量 madVar2
存储在名为 local
的结构中,该结构存储在 variables
范围内。
所以基本上,在适当的范围内,您的代码被视为:
writeOutput("variables.local.madVar2: <BR>");
writeDump(variables.local.madVar2);
尝试在将函数内的变量定义为之后转储 variables
作用域:
var madVar = "madness variable";
madVar2 = "madness two variable";
writeDump(variables);
.....
您将看到变量如何落入范围。
函数外部定义的局部作用域到底是什么?
考虑以下代码:
<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";
将产生此输出:
Local
范围仅在函数内定义,不应在函数外使用。
在函数外定义的变量,默认在variables
范围内。
//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
当您引用 local.madVar2
变量时,它是在函数外部初始化的,您实际上是指 variables
范围内的 local.madVar2
,即变量 madVar2
存储在名为 local
的结构中,该结构存储在 variables
范围内。
所以基本上,在适当的范围内,您的代码被视为:
writeOutput("variables.local.madVar2: <BR>");
writeDump(variables.local.madVar2);
尝试在将函数内的变量定义为之后转储 variables
作用域:
var madVar = "madness variable";
madVar2 = "madness two variable";
writeDump(variables);
.....
您将看到变量如何落入范围。