以下两个块之间是否存在逻辑差异?还有一种形式比另一种更正确吗?它们都存在于自己的功能中 - 这里我省略了。
<cfset local.result = 1 />
<cfset local.i = 1 />
<cfloop from="1" to="5" index="i">
<cfset result = result * i />
</cfloop>
和
<cfset local.result = 1 />
<cfset local.i = 1 />
<cfloop from="1" to="5" index="i">
<cfset local.result = local.result * local.i />
</cfloop>
答案 0 :(得分:7)
是。在你的第二个例子中,你得到完全相同的结果;但是,通过明确标识要修改的范围,您已经提高了可读性 - 这是一件好事。
ColdFusion,会首先搜索LOCAL范围,所以,你还没有保存过多的ColdFusion处理;但是,代码现在更清洁了。如果结果存在于CLIENT或COOKIE范围内,那么您将为ColdFusion保存必须首先评估四个或五个其他范围的工作。
我曾经习惯使用'var result = 0;'将变量本地化到函数的样式,但是,我现在明确地标识了我的所有范围,以帮助确保我正确地确定了所有变量的范围并使代码更易于理解。
总而言之,代码与机器完全相同,但现在人们更容易理解。
答案 1 :(得分:2)
一个建议......改变:
<cfset local.i = 1 />
<cfloop from="1" to="5" index="i">
到
<cfloop from="1" to="5" index="local.i">
少了一行代码,更清楚发生了什么。