(a) 在什么情况下您应该 var 范围变量和 (b) 在什么情况下您不应该在 ColdFusion 组件中 var 范围?
4 回答
当您在 CFC 中实现跨多个请求共享的函数时,您应该更改变量的范围(即,Singleton,应用程序范围内的服务 CFC)
如果每次都实例化 CFC,则您不需要(但仍强烈建议) var 作用域变量,并且您的方法没有调用同一 CFC 中可能访问您在调用者方法中定义的变量的另一个方法. 例如您直接通过 Web 服务或 ajax 调用的远程方法,它不会调用其他使用您没有 var 作用域的 var 或 CFWheels 中的 Controller 的方法。
“您应该始终使用 var 关键字定义函数局部变量。” 每个 CFC 变量和范围文档http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=buildingComponents_29.html
每当您不希望该变量的值受到 a) 访问同一实例的其他请求或 b) 同一实例中的其他方法的影响时,您都应该对变量的范围进行 var。
Henry 是一个很棒的人,但他的声明是“如果每次都实例化 CFC,你就不需要 var 范围你的变量”。是不正确的。:) [编辑:Henry 已经编辑了他的答案]我在这篇博文中写了一个例子来说明这一点:
http://daveshuck.com/2006/11/28/thread-safety-example-var-scope-your-loop-index-in-coldfusion-cfcs/
你可以看到我通过在一个函数中向上计数并在另一个函数中向下计数来创建一个无限循环。在这种情况下,无论是单例用户还是多个用户请求同一个实例都无关紧要,但在单个请求中,一个函数会覆盖另一个函数中的值。
I var scope 任何不是全局变量或组件成员的变量。您要做的最后一件事是在变量范围内创建或覆盖全局变量
我们将所有 var 限定在一个函数中,以便它们仅在该函数中保持本地。至于组件,您可以使用变量或 this 范围使变量可用于组件中的任何函数。如果您正确设置访问权限,“this”范围还将使调用程序可以直接使用变量。