问题描述
据我所知
<cfquery name="groups">
相当于
<cfquery name="VARIABLES.groups">
在我的项目中,在不同的部分(在不同的函数内)有一个同名的 cfquery。
当有很多请求时,我开始收到来自 REST API (Coldfusion) 的奇怪响应,其中有不同的数据集。
通过实验,我意识到如果我在调用 cfquery 之前声明一个局部变量,这将解决问题,因为答案将完全写入函数变量,而不是全局变量。
<cfset var groups = {} />
<cfquery name="groups">
此选项在所有测试用例中都能正常工作。
我的问题是:在函数内部为 cfquery 声明局部变量是否正确,或者是否有其他方法可以避免我的问题?
解决方法
您应该始终使用(在函数中时):
<cfset var groups = {} />
<cfquery name="groups">
or
<cfquery name="local.groups">
你也可以在函数内部使用局部作用域。如果不使用 var,您就可以有效地创建一个全局变量。在函数内部使用 var 或 local 将保护您再次避免在函数外部写入变量。