JSLint ErrorのDon't make functions within a loop
835 ワード
最近JavaScriptを書く時、Don't make functions within a loopというエラーによく会います.実は大丈夫です.間違ってもコードの実行にあまり影響しません.でも、下から見たらすっきりしないです.
主にこの問題に遭遇したのはfor循環の複数のonclick事件の時です.
しかし憎らしいのは、たとえあなたが閉じたとしても、彼は間違いを続けるだろう.
その後、インターネットでいろいろ調べましたが、最後にここで解決方法を見つけました. JSlint Error Explanion(英語ですが、それよりいいのはないようです.)
主にこの問題に遭遇したのはfor循環の複数のonclick事件の時です.
for (i = 0; i < length; i++) {
(function (i) {
pics[i].onclick = function() {
alert(i);
};
}(i));
}
実際に上のコードはDon't make functions within a loopのこのエラーを解決しました.このエラーは関数と循環の間のスコープと引数の問題を防止するためです.しかし憎らしいのは、たとえあなたが閉じたとしても、彼は間違いを続けるだろう.
その後、インターネットでいろいろ調べましたが、最後にここで解決方法を見つけました. JSlint Error Explanion(英語ですが、それよりいいのはないようです.)
for (i = 0; i < length; i++) {
pics[i].onclick = fs(i);
}
function fs(i) {
return function() {
alert(i);
};
}
上のコードは実はこのように書くべきではないと思っています.このように書いたら混乱すると思いますが、間違えないようにしてください.