2016-12-08 9 views
1

関数で関数を定義し、同じ変数名を共有するとどうなりますか?例:新しく定義された関数のパラメータの名前空間

$(document).ready(

$("a").on("click", function(event) 
{ 
    // function code goes here 
    function newfunction(event) 
    { 
    // function code dependant on parameter "event" goes here. 
    // Is "event" now a new variable totally independant to the first 
    // parameter "event". Were do I find something concerning the 
    // topic in the jQuery documentary? 
    } 
} 

); 

); 

行6の2番目の「イベント」は、3行目の最初の「イベント」とは完全に独立していますか?私はドキュメンタリーのjQueryの

http://learn.jquery.com/about-jquery/

に名前空間にfinde何かをcoun't。どこを見なければならないのですか?

+2

を受賞。はい。これはjavaScriptの機能であり、jQueryではありません。「javascriptパラメータのスコープ」などを検索してください。 –

答えて

0

私のコメントから:それらは異なる変数です。はい。これはjavaScriptの機能であり、jQueryではありません。「javascriptパラメータのスコープ」などを検索してください。

他の詳細を無視すると、2つの関数がネストされます。パラメータ変数のスコープは、その関数の中カッコ内にのみあります。

function a(p1){ 
    // Can only see p1 here 
    function b(p2){ 
    // can see p2 and p1 here 
    } 
} 

名は、外側の変数のそれと一致した場合、コードに最も近い範囲が彼らは異なる変数であり

function a(p){ 
    // Can only see first p here 
    function b(p){ 
    // can see second p here as the first is now hidden by the new definition 
    } 
} 
+0

はい、私はあなたの2番目の例の説明をo'Reillyの本で見つけました。関数内のパラメータは、関数外のパラメータよりも優先度が高いと言われています。同じ変数名pを再び使用するとき、変数pを効果的にbの中に隠しています。ご回答有難うございます! –

0

新機能のeventはパラメータです。したがって、呼び出されるときにそのメソッドに渡されるものはすべて値になります。クリックハンドラのパラメータには直接関連付けられていません。クリックハンドラからのイベントパラメータにしたい場合は、その名前をnewfunctionメソッドに入れないでください。クリックハンドラからのイベントは、クリックハンドラのスコープ内で定義されているため、呼び出されたときにnewfunction内で使用できます。

関連する問題