forEachでイベントを登録する際に、インデックス番号を関数の末尾に付けようと思いましたが失敗しました。
以下が失敗したコードです。
Javascript
1paginationControl.forEach(function (el,i) { 2 el.addEventListener('click', function () { 3 app.ticker.add(slide + i); //エラー部分 slide0が入るようにしたかった 4 }) 5 }) 6function slide0(){ 7 console.log('slide0が実行されました'); 8 } 9function slide1(){ 10 console.log('slide1が実行されました'); 11 }
調べたところeval()にたどり着き、以下では成功しましたが、非推奨とのことで避けたいと思います。
Javascript
1paginationControl.forEach(function (el,i) { 2 el.addEventListener('click', function () { 3 app.ticker.add(eval('slide' + i)); //とりあえず成功 4 }) 5 }) 6function slide0(){ 7 console.log('slide0が実行されました'); 8 } 9function slide1(){ 10 console.log('slide1が実行されました'); 11 }
さらに調べたら配列に入れることを思いつき、最終的に以下になりました。
Javascript
1paginationControl.forEach(function (el,i) { 2 el.addEventListener('click', function () { 3 app.ticker.add(slideAction[i]); //とりあえず成功 4 }) 5 }) 6const slideAction = [slide0,slide1]; 7function slide0(){ 8 console.log('slide0が実行されました'); 9 } 10function slide1(){ 11 console.log('slide1が実行されました'); 12 } 13
質問したいことは以下の2点です。
1.この記述に問題はありますか? (一般的ではない、スマートじゃないなど)
2.最初のコードで、関数名に変数やインデックス番号を結合することはできないのでしょうか?
この疑問は根本的な理解ができていないはずなので、具体的でなくて構いませんので、◯◯で調べろ等ご助言を頂けないでしょうか。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー