2016-04-13 29 views
0

内部の閉鎖私は、ループ内活字体でクロージャを使用しようとしていますが、私はいくつかの深刻な問題を持っている:私は活字体1.8.1を使用していますが、私はES5をターゲットにする必要がある活字体 - ループ

for(let vehicle of vehicles) { 
    update(location => 
     { 
      vehicle.location = location; 
     } 
    ); 
} 

を私は、コンパイル時に次のエラーが表示さ:私はループの中でVARの代わりレットを使用している場合、それはすべて閉鎖のための車両の最後の値を使用しています

Loop contains block-scoped variable 'vehicle' 
referenced by a function in the loop. 
This is only supported in ECMAScript 6 or higher. 

ES5を対象とするときにこの問題を回避する方法はありますか?

+0

[ループ内のJavaScriptのクロージャ - 単純な実施例]の可能な重複(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical -example) –

答えて

0

これは、更新で呼び出す関数がループ反復ビークルではなく、可変ビークルにバインドされているため、問題です。

また、letを使用したスコープ指定をサポートするJavaScriptランタイムを使用すると、意図したとおりに動作する必要があります。