我对变量解析顺序没什么印象,但我在CFML参考或ColdFusion开发指南中找不到它。有人可以帮忙吗?
答案 0 :(得分:19)
ColdFusion 9的规范范围顺序是:
您可以在Developing ColdFusion 9 Applications。
中查看Adobe的相关文档但是,某些范围仅在某些上下文中可用,因此搜索范围的顺序是不同的,具体取决于代码的上下文。
正如Al Everett在答案中指出的那样,始终范围变量被认为是最佳做法。显式作用域产生较少的模糊代码,通常更快。只要不对变量进行范围调整,就有可能从您不想要的范围中获取变量。
当您访问的变量位于搜索顺序的第一个范围内时,将变量保持为无范围的实际上要快一些。这是因为ColdFusion解析它时,变量名中的每个点都会产生很小的代价。例如,在CFC方法中,访问
myVar
比local.myVar
稍快一些。这仅适用于:
local
CFC或UDF中的范围变量- 线程
CFML 中的local
范围内的变量variables
范围变量在所有其他情况下,明确声明范围更快(更清晰)。
使用这种技术应被视为不良做法。您应该只在性能关键代码中使用此技术,在此代码中可以保证变量始终存在于预期范围内。请记住,这是以增加歧义为代价的。
答案 1 :(得分:16)
始终范围变量是一种普遍接受的最佳做法,主要有两个原因:
也就是说,这里是搜索订单变量范围:
编辑:它还会告诉您不搜索的范围:SESSION,SERVER,APPLICATION