2012-05-04 48 views
3

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

一些ColdFusion的文件说,它应该这样做:

<cfset Var testVariable = "this is a local variable"> 

但其他人,像这样做:

<cfset LOCAL = StructNew() /> 
<cfset LOCAL.testVariable = StructNew() /> 

哪种方式更好?

+1

其实这不是一个答案,但你会得到更多的信息[这里](http://www.isummation.com/blog/work-around-coldfusion-local-scope /),我会了解一下本地范围。 – Vikas

+3

值得注意的是你的第二个例子应该是: BennyB

回答

4

要么会工作。因为在每个函数中都有一个本地范围,它包含任何局部范围的值,所以在本地范围内(并且我假定为10)var local = structNew()是不必要的(尽管无害且使您的代码向后兼容)。同样在CF8和更早的版本中,这些变量将需要在函数中声明的第一件事。

所以具体回答你的问题,我更喜欢的VAR本地= structNew()(或只是VAR本地= {}),因为:

  • 这意味着局部范围的变量显然是这样的(VAR 范围的问题可能很难调试)。
  • 你可以转储或检查比照 当地的“范围” 8.
+3

小的澄清,在CF9中你不再需要'var'关键字。但是您仍然必须使用'local'前缀将变量放在函数local scope中,即''。另外,为了在CF8中进行调试,可以使用未公开的'getPageContext()。getActiveFunctionLocalScope()'方法来转储函数局部变量。虽然坦率地说'var local = {}'更加犹太教:) – Leigh