1

每当我在循环中使用 for ... 时,循环的索引变量似乎总是在变量范围内。
例如,如果我有一个带有使用此循环的方法的组件:

for(key in params){  
    writeOutput(key);  
}

变量'key'将被放置在变量范围内。如果我已经在组件的任何地方声明了 variables.key,那么当我在循环中使用这个 for ... 时,这个值会被覆盖。我真正需要的是这样的:

for(var key in params){
    writeOutput(key);
}

然而,这会引发解析错误。

有没有办法将 for ... in index 放在与变量范围不同的范围内?

4

2 回答 2

10

如果您事先没有 var,则 CFC 中的默认范围是变量。

您必须像这样在循环外更改索引:-

var key = "";

for(key in params){
    writeOutput(key);
}

另一种方法是为了避免在你的函数中改变所有内容,是在“本地”结构中声明你的变量。在 CF9 中内置了本地范围,但对于 CF8 或更低版本,请执行以下操作:-

var local = structNew();

for(local.key in params){
  writeOutput(local.key);
}
于 2012-04-04T07:41:03.810 回答
3

此语法适用于 ColdFusion 9 及更高版本:

for ( var key in params ){
    writeOutput( key );
}
于 2012-04-04T12:23:42.023 回答