こんにちは関数がどのように値を返すかを理解したいと思います。1つは機能していて、もう1つは機能していないという2つの機能があります。2番目の機能が機能しない理由を知りたい。 http://jsfiddle.net/95vXQ/5/
これが機能していない2番目の機能です。なぜ変わらないのかisVisiblevalue
こんにちは関数がどのように値を返すかを理解したいと思います。1つは機能していて、もう1つは機能していないという2つの機能があります。2番目の機能が機能しない理由を知りたい。 http://jsfiddle.net/95vXQ/5/
これが機能していない2番目の機能です。なぜ変わらないのかisVisiblevalue
isVisible
クリック機能内で定義されているため、2番目のスクリーンショットは機能しません。その機能が完了isVisible
すると、設定が解除されます。クリック関数を再度呼び出すと、isVisible
リセットされ、値がtrueに戻ります。これは可変スコープと呼ばれます。
そして、この問題は戻り値とは何の関係もありません。値を返すには、を使用する必要がありますがreturn [varname]
、それはクリック関数内では役に立ちません。
可変スコープ問題です。詳細については、こちらをご覧ください。簡単にするために、関数内で定義した変数は、関数外では未定義です。
また、2番目のスクリーンショットの関数は、クリックイベントが発生するたびにその関数が実行されるため失敗しています。つまり、isVisible値をリセットしている場合でも、真の値を設定してisVisibleを再度初期化しているため、次の呼び出しには実行されません。それ。
jQueryクリック関数はこのリンクで明確に説明されています。クリック関数を使用して、オブジェクトのクリック時に単一または一連のjQueryイベントをトリガーできます。関数で宣言された変数は、そのクリック関数内でのみ機能します。クリック関数で値を返すことはできず、イベントのみをトリガーできます。
関数内で値trueを再割り当てしているため、2番目の例は期待どおりに機能しませんisVisible
。isVisible
クリック関数内で宣言している場合、スコープは関数内にのみ存在することに注意してください。
上記の例の動作を知りたいだけで、関数の外部で変数を宣言することに興味がない場合は、このjsfiddleを試してください。
表示/非表示機能を実行する場合は、このトグルjsfiddleを試してください。以下のコード。
$(function(){
$("#btnShow").toggle(
function(){
$(this).val("Show");
$("#divContent").hide();
},
function(){
$(this).val("Hide");
$("#divContent").show();
}
);
});
とてもシンプルです。
最初のケースでは、これはグローバル変数であるため、非表示にした後でFalseに更新されると、divが再び表示されます。
まだはっきりしていませんか?