Coldfusion方法级别范围定义

Coldfusion方法级别范围定义,coldfusion,Coldfusion,定义方法级变量范围的最佳方法是什么 一些ColdFusion文档说应该这样做: <cfset Var testVariable = "this is a local variable"> <cfset LOCAL = StructNew() /> <cfset LOCAL.testVariable = StructNew() /> 但其他人则是这样做的: <cfset Var testVariable = "this is a local

定义方法级变量范围的最佳方法是什么

一些ColdFusion文档说应该这样做:

 <cfset Var testVariable = "this is a local variable">
<cfset LOCAL = StructNew() />
<cfset LOCAL.testVariable  = StructNew() />

但其他人则是这样做的:

 <cfset Var testVariable = "this is a local variable">
<cfset LOCAL = StructNew() />
<cfset LOCAL.testVariable  = StructNew() />

哪种方法更好?

两种方法都可以

在CF9(我假设是10)中,var local=structNew()是不必要的(尽管无害,并使代码向后兼容),因为每个函数中都有一个包含任何局部范围值的局部范围。同样,对于CF8和更早的版本,这些变量需要首先在函数中声明

因此,为了具体回答您的问题,我更喜欢var local=structNew()(或者只是var local={}),因为:

  • 这意味着局部作用域变量显然是这样的(var 范围问题可能是调试的一大难题)
  • 您可以转储或检查 cf 8中的本地“范围”

实际上,这不是一个答案,但你会得到更多关于本地范围的信息。值得注意的是,你的第二个例子应该是:小澄清,在CF9中,你不再需要
var
关键字。但是您仍然必须使用
local
前缀将变量放置在函数local作用域中,即
。此外,为了在CF8中进行调试,您可以使用未记录的
getPageContext().getActiveFunctionLocalScope()
方法转储函数局部变量。尽管公认的是,
var local={}
更符合犹太教:)