【問題】
var i = 0; function jack(){ if( i == 10 ){ clearInterval( dummyInterval ); } console.log( i ); i++; } function myCounter(){ var dummyInterval = setInterval("jack()",1000); } $("#hoge").click( function(){ myCounter(); }
を実行し、クリックすると、
ご丁寧に1000ミリ秒ごとに
Uncaught ReferenceError: jack is not defined
と伝えてくれる。
【解決】
var dummyInterval = setInterval("jack()",1000);
を
var dummyInterval = setInterval( jack ,1000);
とした。
【雑感】
http://www.pori2.net/js/timer/1.htmlやhttp://www.scollabo.com/banban/java/jvsample_014.html
を参考にしていたが、どれも
"関数名"という表記だった。
ではじめて生の関数名を試した。
他にも
setInterval( "jack", 1000);
setInterval( "jack()", 1000);
は両方とも1秒ごとにReferenceError、
setInterval( jack(), 1000);
はむしろピクリとも動かなかった。
とりあえず動いたのは
setInterval( jack, 1000);
のみだった。
関数の宣言は、
var jack = function(){
であっても
function jack(){
であっても結果は変わらなかった。