1

for ... inループを使用するときはいつでも、ループのインデックス変数は常に変数スコープ内にあるように見えます。
たとえば、このループを使用するメソッドを持つコンポーネントがある場合:

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

変数「キー」は変数スコープに配置されます。コンポーネントのどこかですでにvariables.keyを宣言している場合、これをfor ... in loopで使用すると、この値が上書きされます。私が実際に必要としているのは次のようなものです。

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

ただし、これは解析エラーをスローします。

for ...を変数スコープとは異なるスコープのインデックスに配置する方法はありますか?

4

2 に答える 2

10

事前に変数を設定しない場合、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

この構文は、ColdFusion9以降で機能します。

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