【问题标题】:Coldfusion Method Level scope definitionColdfusion 方法级别范围定义
【发布时间】:2012-05-13 17:56:06
【问题描述】:

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

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

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

但其他人,这样做:

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

哪种方式更好?

【问题讨论】:

  • 其实这不是一个答案,但你会得到更多信息here 我挖掘的关于本地范围的信息。
  • 值得注意的是你的第二个例子应该是:

标签: coldfusion


【解决方案1】:

两者都行。

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

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

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

【讨论】:

  • 小澄清,在 CF9 中您不再需要 var 关键字。但是您仍然必须使用local 前缀将变量放置在函数本地范围内,即&lt;cfset Local.testVariable = ".."&gt;。此外,对于 CF8 中的调试,您可以使用未记录的 getPageContext().getActiveFunctionLocalScope() 方法转储函数局部变量。虽然不可否认var local = {} 更洁净:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2014-02-03
相关资源
最近更新 更多