2010-12-15 39 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"> 

少了一個行,就更清楚了這是怎麼回事。

相關問題