每当我使用for ... in循环时,循环的索引变量似乎总是在变量范围内 例如,如果我有一个使用此循环的方法的组件:
for(key in params){
writeOutput(key);
}
变量'key'将放在变量范围内。如果我已经在组件中的任何地方声明了variables.key,那么当我将它用于... in循环时,该值将被覆盖。我真正需要的是这样的事情:
for(var key in params){
writeOutput(key);
}
然而,这会引发解析错误。
有没有办法将for ... in index放在与变量范围不同的范围内?
答案 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 );
}