3

したがって、jQueryの基本ページの下部近くに、この例が示されています。匿名にパラメータfunction()がないことに注意してください。引用JQueryページは言う

匿名関数は正確に1つのことを行います。それは、外部スコープのparam1とparam2の値を使用してmyCallBackを呼び出すことです。

$.get('myhtmlpage.html', function(){
  myCallBack(param1, param2);
});

そこで、この例に基づいて試してみました

私のコードはこのようなもので、10行目に匿名function(result)がありますが、パラメータ「result」を追加する必要がありますfunction()。JQueryWebサイトで提案されているとおりにできないか、機能しません。

<html>
    <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                var GetResults = function (result) {
                        $("div").html(result);
                    }
                $("button").click(function () {
                    $.get("demo_ajax_load.txt", function (result) {
                        GetResults(result);
                    });
                });
            });
        </script>
    </head>
    <body>
        <div>
            <h2>Let AJAX change this text</h2>
        </div>
        <button>Change Content</button>
    </body>
</html>

私の質問は、なぜJQueryページはパラメータfunction()なしで動作すると言っているのですか?それを機能させるために追加function(result)する必要がありますか?私は何かが足りないのですか?

4

2 に答える 2

7

重要なのは、投稿したリンクの説明にあります。

匿名関数は正確に1つのことを行います:外部スコープのparam1とparam2の値を使用してmyCallBackを呼び出します

これは基本的に、param1param2変数が以前に定義されていることを示しています(外部スコープ):

$("button").click(function () {
    var param1 = "something";
    var param2 = "something else";
    $.get('myhtmlpage.html', function(){
       myCallBack(param1, param2); // this uses the previously declared variables
    });
});

myfunc("some text")JavaScript内で、たとえば関数を呼び出すと、実際の関数は次のように定義できます。function myfunc(var1) {またはfunction myfunc() {、最初の例では、最初の引数の変数名を正式に宣言します...

​function myfunc() {
    alert(arguments[0]);
}

myfunc("some text");​​​​​​​​​​

正式に宣言されていない引数は、arguments配列を使用して使用できます... MDNのこのドキュメントを参照してください

于 2012-04-20T14:01:28.753 に答える
1

そのようなクロージャ内で変数を使用するには、変数をすでに定義しておく必要があります。このget関数は結果を無名関数の最初のパラメーターに入れるresultので、何かをしたい場合は、そこに入れてキャッチする必要があります。

これを試してください:パラメーターを再度削除し、コードの先頭にresult追加result="Hello World";します。

于 2012-04-20T14:00:37.280 に答える