3

因此,在jQuery 基本页面的底部附近,它给出了这个例子,注意匿名是如何function()没有参数的。引用 JQuery 页面说

匿名函数只做一件事:调用 myCallBack,param1 和 param2 的值在外部范围内。

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

所以,我根据这个例子试了一下

我的代码是这样的,类似的东西,在第 10 行,我有一个 anonymous function(result),但我需要添加参数“结果”不能function()像 JQuery 网站建议的那样,否则它将不起作用:

<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

关键在于您发布的链接的解释:

匿名函数只做一件事:调用 myCallBack,param1 和 param2 的值在外部范围内

这基本上是说param1andparam2变量是先前定义的(外部范围):

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

例如,在 JavaScript 中,当您调用函数时myfunc("some text"),可以将实际函数定义为,function myfunc(var1) {或者function myfunc() {第一个示例只是正式声明第一个参数的变量名...

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

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

未正式声明的参数 ar 可使用arguments数组 ...请参阅 MDN 上的此文档

于 2012-04-20T14:01:28.753 回答
1

您需要已经定义了变量才能在这样的闭包中使用它们。由于该get函数将结果放入匿名函数的第一个参数中,result因此如果您想对它做任何事情,您需要将结果放在那里以捕获它。

试试这个:result再次删除参数,并result="Hello World";在代码开头添加。

于 2012-04-20T14:00:37.280 回答