【发布时间】:2014-02-25 06:19:58
【问题描述】:
今天我正在阅读博客Difference between THIS and APPLICATION scope。什么解释了他们的理解,之后我在这个范围内的 Application.cfc 中声明了一个变量,我可以在我的所有页面中访问该变量。所以我的问题是我们可以使用这个范围来声明应用程序级变量吗?或者 THIS 和 APPLICATION 范围的变量之间是否还有区别。 例子: 应用程序.cfc
<cfset THIS.testVar1 = 50>
<cfset APPLICATION.testVar1 = 100>
索引.cfm
<cfdump var="#THIS.testVar1#"> O/P: 50
<cfdump var="#APPLICATION.testVar2#"> O/P: 100
所以这让我认为这两个范围是相似的。请让我知道这些范围之间是否存在更多差异。
【问题讨论】:
-
当您在 Application.cfc 中使用
THIS范围设置变量时,您实际上并没有将其存储在 Application 范围中。该代码将在每个页面请求上得到处理。 -
@ScottStroz:处理后的意思是什么?
-
如果你在伪构造函数中有
<cfset this.stuff = 'moo' />之类的东西,那么该行代码会随每个页面请求一起执行。但是,如果您以正确的方式设置应用程序范围变量(例如在onApplictionStart()中还有其他方式,但这很常见),它只会在您启动应用程序时运行,或者如果您的应用程序中有逻辑重新初始化应用程序。
标签: coldfusion scope coldfusion-9