2253

[code]

    for (i = 0; i < array.length; i++) {
      $(".hoge").each(function() {
        alert("hoge");
      });
    }
    
[/code]

上のように、ループ文の中にfunctionを作成すると、JSHint（JSLintでも同じ）でエラーになります。

> JsHint (W083): Don't make functions within a loop.

なぜループ内に関数を作成してはいけないのでしょうか？


CC BY-SA 3.0
2014-12-20T14:03:20.200
2252
2014-12-20T14:28:44.313
2014-12-20T14:28:44.313
30
3925
question
javascript
forループ内の関数作成をＮＧにする理由


詳細な理由は <https://jslinterrors.com/dont-make-functions-within-a-loop> の  
[Why do I get this error?](https://jslinterrors.com/dont-make-functions-
within-a-loop#why-do-i-get-this-error-) に書いてあるとおり、  
意図したとおりに動かないケースが多いからでしょう。

その動かないケースに該当する質問が、以下のとおり、すでにいくつかなされています。

  * [for文でclick時の動作を定義したい](https://ja.stackoverflow.com/questions/1534/for%E6%96%87%E3%81%A7click%E6%99%82%E3%81%AE%E5%8B%95%E4%BD%9C%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E3%81%84/1616#1616)
  * [どうしてこのsetTimeoutのコードが同じ値ばかり出力していますか](https://ja.stackoverflow.com/questions/2152/%E3%81%A9%E3%81%86%E3%81%97%E3%81%A6%E3%81%93%E3%81%AEsettimeout%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E5%90%8C%E3%81%98%E5%80%A4%E3%81%B0%E3%81%8B%E3%82%8A%E5%87%BA%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B/2154#2154)


CC BY-SA 3.0
2014-12-20T14:08:41.023
2253
2014-12-20T14:08:41.023
2017-04-13T12:52:39.113
-1
208
2252
answer