jqueryでsettimeoutとsetIntervalを使用する際の注意点


以前はタイマーを書くとき、いつも直接
setInterval("fn()",2000); 
最近、jqueryライトタイマを使用すると、fnが存在しないというエラーメッセージが常に表示されます.
$(function(){setInterval("fn()",2000);}) 
解決策は引用符と括弧を抜き、最も原始的な方法を採用することです.
$(function(){setInterval(fn,2000);}) 
もう1つはjqを書く拡張で、以下のようにします.
 
  
$(function(){ 
$.extend({ 
fn:function(){ 
alert("im fn!"); 

}); 
setInterval("$.fn()",2000); 
}); 

以上の書き方は問題ありません.しかし、パラメータを渡す必要がある場合はどうすればいいですか? 
上記の最初の書き方のように、
$(function(){setInterval(fn,2000);}) 
書くなら
$(function(){setInterval(fn(para),2000);}) 
新聞を間違えた.これはクラシックで、バカです. 
functionを内蔵して書くことができます
$(function(){setInterval(function(){fn(para)},2000);}) 
これでもいいです. 
2つ目の方法がどのように伝わるかについては、これはもっと簡単で、私はあまり言いません. 
ブログに投稿するのは記憶として使うだけで、すべて基礎ですね!初心者の方が間違いやすいところでもあります! 
//======================== 
やはり第2の伝参の方法を補充します. 
まずセグメントコードを見て
 
  
$(function(){ 
$start = 1; 
$.extend({ 
a:function(t){ 
$index = t; 
alert($index); 
$start++; 

}); 
setInterval("$.a("+$start+")",2000); 
}); 

このように書いてみる人もいますが、結果は何ですか?結果はalertが出てきて、ずっと1で、増加しません.ここで注意しなければならないのはsetIntervalの中の最初のパラメータで、これは文で、二重引用符で囲まれていて、中のものは変数として解釈されます.上記のように書けば
setInterval("$.a(1)",2000); 
それでは結果も厚かましくない.正しい書き方、もちろんそうです
 
  
$(function(){ 
$start = 1; 
$.extend({ 
a:function(t){ 
$index = t; 
alert($index); 
$start++; 

}); 
setInterval("$.a($start)",2000); 
}); 

このとき$startは変数として解釈されます.文はfunction(){a(値)}ではなくfunction(){a(変数)}に相当します.