coldfusion中的var关键字以及使用它的次数

时间:2015-11-01 06:40:15

标签: coldfusion scope

我总是尝试在使用CF的函数内部时使用var关键字,但我有一个可能是愚蠢的问题,你经常使用它吗?

示例:

<cfset var local = ""> <!-- set at the top of the function -->

<!-- then later in the function -->
<cfset var local.firstname = "steve">
<cfset var local.lastname = "smith">
<cfset var local.email = "email@email.com">

是否每次编写变量时都要设置关键字,或者只是在函数中使用它时的第一个实例?

或者它和

一样
<cfset var local = ""> <!-- set at the top of the function -->

<!-- then later in the function -->
<cfset local.firstname = "steve">
<cfset local.lastname = "smith">
<cfset local.email = "email@email.com">

3 个答案:

答案 0 :(得分:5)

您使用的是哪个版本的ColdFusion?由于ColdFusion 9 local是一个范围,因此没有必要专门创建它。

回答你的问题:所有函数局部变量都需要在函数的本地变量主动。 ColdFusion不会自动执行此操作。

有两种方法可以做到这一点。通过var关键字:

var someVar = someValue;

或通过local范围:

local.someVar = someValue;

您的示例中对于变量的含义感到困惑。鉴于此代码:

var myStruct = {};
myStruct.someKey = "some value";

在这个例子中myStruct是变量。 myStruct.someKey不是离散变量,它只是myStruct变量的子键。所以这没有意义:

var myStruct = {};
var myStruct.someKey = "some value";

答案 1 :(得分:3)

您无需使用&#39; var&#39;本地&#39;中变量的关键字范围。因为&#39; local&#39;是一个结构,其所有成员都属于同一范围。

基本上是&#39; local&#39; struct只是一个容器,用于容纳必须位于函数本地范围内的所有变量。

<强>更新 CF9 local的AS是一个显式范围,用于保存函数范围变量,而不声明它。通常我输入大写字母,但这是一个品味问题。

<cfset LOCAL.firstname = "steve">
<cfset LOCAL.lastname = "smith">
<cfset LOCAL.email = "email@email.com">

在Coldfusion 8中以及通常在函数顶部定义local结构之前:

<cfset var LOCAL = structNew() />

但是,您可以为该结构选择任何其他名称。

答案 2 :(得分:0)

如果您没有使用本地范围,则每个变量只需使用一次关键字var

我在7.1版本中介绍了用户自定义函数。我不确定其他版本,但在那个版本中,在var标记之后,在执行任何其他命令之前,您必须cfargument所有变量。换句话说,这没关系。

<cffunction etc>
<cfargument name = "arg1">
<cfset var x = 0>
<cfquery>
sql goes here
</cfquery>
<cfset x = 3>

但这会引发错误:

<cffunction etc>
<cfargument name = "arg1">

<cfquery>
sql goes here
</cfquery>
<cfset var x = 3>