2010-12-15 76 views
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> 
+2

第二个更清楚哪个'result'被修改,哪个'i'正在被使用,所以我投了第二块。 (免责声明:我从来没有在Coldfusion编码)。 – FrustratedWithFormsDesigner 2010-12-15 15:12:09

+1

ColdFusion 9,我想? – ale 2010-12-15 15:40:51

+0

是的,Al。 ColdFusion 9。 – Mohamad 2010-12-15 15:47:40

回答

7

是。在你的第二个例子中,你正在做出完全相同的结果;但是,通过明确指定要修改的范围,可以提高可读性 - 这是一件好事。

ColdFusion,首先会搜索LOCAL作用域,所以,你没有保存ColdFusion的很多处理;但是,现在代码更清洁。如果结果存在于CLIENT或COOKIE范围内,那么您将保存ColdFusion必须先评估四个或五个其他范围的工作。

我曾经使用'var result = 0;'但是,我现在明确地标识了所有范围,以帮助确保我已正确限定所有变量的范围,并使代码更易于理解。

总而言之,代码与机器完全一样,但现在更容易理解人类。

2

一个建议...变化:

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

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

少了一个行,就更清楚了这是怎么回事。