如何将索引变量放在for ... in local in local scope中?

时间:2012-04-04 07:19:42

标签: coldfusion scope for-in-loop

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:10)

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

你必须在循环之外修改索引,如下所示: -

var key = "";

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

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

var local = structNew();

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

答案 1 :(得分:3)

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

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