Coldfusion函数外的局部范围?

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)

将产生此输出:

图2

Anu*_*rag 8

Local范围仅函数中定义,并且不应被它之外使用.

在函数外定义的变量,默认为variables范围.

//that way
myVar = 0;
//will be the same as
variables.myVar = 0;
Run Code Online (Sandbox Code Playgroud)

当您参考local.madVar2变量,这是你基本上指的是功能外初始化local.madVar2variables范围,即变量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)

您将看到变量如何落入范围.

在此输入图像描述