1

以下两个块之间是否存在逻辑差异?还有一种形式比另一种更正确吗?它们都将驻留在自己的功能中——我在这里省略了一些东西。

    <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>
4

2 回答 2

7

是的。在你的第二个例子中,你得到了完全相同的结果;但是,通过明确标识要修改的范围,您提高了可读性——这是一件好事。

ColdFusion,将首先搜索 LOCAL 范围,因此,您并没有为 ColdFusion 节省多少处理;但是,现在代码更干净了。如果结果存在于 CLIENT 或 COOKIE 范围内,您就可以为 ColdFusion 省去必须首先评估四个或五个其他范围的工作。

我曾经使用过'var result = 0;' 将变量本地化到函数的风格,但是,我现在明确标识我的所有范围,以帮助确保我正确地确定了所有变量的范围,并使代码更容易被其他人理解。

总而言之,代码与机器完全相同,但现在对人类来说更容易理解。

于 2010-12-15T15:43:15.657 回答
2

一个建议......改变:

<cfset local.i = 1 />
<cfloop from="1" to="5" index="i">

<cfloop from="1" to="5" index="local.i">

少了一行代码,更清楚发生了什么。

于 2010-12-15T16:44:56.937 回答