代码之家  ›  专栏  ›  技术社区  ›  Mohamad

在LOC、VAR和VARIABLES作用域中声明变量有区别吗?

  •  2
  • Mohamad  · 技术社区  · 14 年前

    我看到这三种符号都被频繁使用,我想知道它们之间的区别是什么:

    <cfset var foo = "bar" />
    <cfset local.foo = "bar" />
    <cfset variables.foo = "bar" />
    <cfset arguments.foo = "bar" />
    
    3 回复  |  直到 12 年前
        1
  •  13
  •   Daniel Sellers    14 年前

    风险价值 地方的 是相同的作用域,它们仅对声明它们的方法/函数可用。CF 9的本地范围是新的,在使用VAR创建仅存在于该方法中的变量之前。

    变量 可用于申报的整个cfc或cfm页面以及任何包含的模板。

    论据 用于传递到方法/函数中的参数,并且仅存在于方法/函数中。

        2
  •  3
  •   Ciaran Archer    14 年前

    如果你想知道为什么 local 结束 var 例如,在CFC函数中,考虑以下两个例子:

    <cffunction name="foo" returntype="query" output="false">
    
      <cfset var myQuery = "" />
    
      <cfquery name="myQuery">
        select * from bar
      </cfquery>
    
      <cfreturn myQuery />
    
    </cffunction>
    

    首先,必须将变量声明为 风险价值 然后用它。对比:

    <cffunction name="foo" returntype="query" output="false">
    
      <cfquery name="local.myQuery">
        select * from bar
      </cfquery>
    
      <cfreturn local.myQuery />
    
    </cffunction>
    

    从本质上讲,它把所有这些 风险价值 循环变量和查询等语句。少了一行代码!:)

    我希望这会有帮助。

        3
  •  1
  •   DanSingerman    14 年前

    首先,我想你是说 local 范围,不是 loc (我不知道 位置 )

    <cfset var foo = "bar" />
    <cfset local.foo = "bar" />
    

    应该是完全一样的。变量将在其定义的函数中是私有的。

    CFC中的变量范围将在CFC实例中创建变量private(与函数相反)

    在CFC之外,我认为变量的作用域将是私有的,而它是在模板中创建的。

    推荐文章