雖然這是可能的,如果它是經過批准的做法VAR範圍多個變量在這樣一行不拋出一個錯誤,我想知道:你可以在Coldfusion中一次性定義多個變量嗎?
<cfset VAR var1 = var2 = var3 = ''>
我想感謝所有的想法和意見,特別是如果他們以文檔作爲支持論點。我知道它的工作原理沒有拋出一個錯誤,但我找不到具體的文檔,說明它是否會限定一個變量或者它是否聲明瞭值。
謝謝!
雖然這是可能的,如果它是經過批准的做法VAR範圍多個變量在這樣一行不拋出一個錯誤,我想知道:你可以在Coldfusion中一次性定義多個變量嗎?
<cfset VAR var1 = var2 = var3 = ''>
我想感謝所有的想法和意見,特別是如果他們以文檔作爲支持論點。我知道它的工作原理沒有拋出一個錯誤,但我找不到具體的文檔,說明它是否會限定一個變量或者它是否聲明瞭值。
謝謝!
大家都說你需要用var
或local
來確定變量的範圍。還有@Ben說,你不能像你一樣真正變量範圍變量。我的建議是使用本地範圍,這樣做如下:
<cfscript>
var val = 'some value'
local = {
var1 = duplicate(val),
var2 = duplicate(val),
var3 = duplicate(val)
};
</cfscript>
也就是說,在我看來,是實現你彷彿在做的最快方法。我使用重複函數,所以如果你使用一個複雜的變量作爲val(struct,array等)的值,你不會遇到引用問題。
<cfset>
沒有範圍變量。
要正確範圍變量需要var
關鍵字
<cfset var someVariable = 1>
否則,變量將被創建,但分配給默認範圍。 默認範圍取決於上下文以及我們正在討論的CF版本。
對於CFC方法:
LOCAL
範圍VARIABLES
範圍由於CF9作用域規則是不是真的需要的var
關鍵字。 變量可以直接在任何時候添加到LOCAL
範圍內(<cfset LOCAL.foo = "bar"
)。沒有必要提前確定它們的範圍。
我想我應該首先指出你的代碼不會變量範圍的變量,它只是設置它們的值。您需要使用VAR關鍵字(或CF9中的LOCAL作用域)來指定變量應爲VAR作用域。
此外,鏈接分配不適用於所有版本的CF.我的工作場所仍然在6.1,並且這引發了一個錯誤。
最後,如果我記得沒錯,如果使用上面的賦值語句,那麼var1和var2等於true,因爲如果沒有發生錯誤,賦值操作的結果爲true。 (有人糾正我,如果我錯了,因爲我無法在工作中測試它,因爲我們在6.1)
無論如何,回到你的問題,我不鏈接任務或範圍確定。首先,我認爲個人任務更清晰。其次,它不適用於所有版本。所以我建議個人的任務將是首選。
我不喜歡鏈接,但用CF9快速測試顯示所有變量都等於一個空字符串。然而'var2'和'var3'被放置在共享的'variables'範圍內(不是本地函數)。 – Leigh 2011-04-21 17:33:03
我見過人們簡單地創建一個var結構體,並將這些變量定義爲結構體的鍵。這樣你就不必一直使用var了。例如:
<cfset var local = structNew() />
<cfset local.var1 = "" />
<cfset local.var2 = "" />
這對於那些使用ColdFusion Server 8及以下版本並且與var scope保持一致的用戶很有幫助。
FWIW,是的,你可以在CF9做到這一點:
<cfset var a = var b = c = d*5>
這裏是the documentation它給出了例子。在這種情況下,我假設變量c
和d
已經在函數的前面定義過了。
所以,你需要重複var
關鍵字每個變量,並在你的情況,這將導致:
<cfset VAR var1 = VAR var2 = VAR var3 = ''>
BTW:一個簡單的方法來測試它是轉儲功能局部範圍:CF9 /'#本地#'CF8 /'#getPageContext()。getActiveFunctionLocalScope()#' – Leigh 2011-04-21 17:43:31