用JavaScript理解匿名函数

用JavaScript理解匿名函数,javascript,jquery,Javascript,Jquery,我了解函数及其工作原理。但是,我不确定以下几点: function(msg) { alert(msg); } 如果这没有分配给任何东西,它是如何命名的 我更熟悉这一点: function alert(msg) { // set it alert(msg); } alert('hello!'); //call it 您可以将使用此语法定义的函数分配给变量,就像其他对象一样: var myAlert = function(msg) { alert(msg); }; myAlert("h

我了解函数及其工作原理。但是,我不确定以下几点:

 function(msg) { alert(msg); }
如果这没有分配给任何东西,它是如何命名的

我更熟悉这一点:

function alert(msg) { // set it
   alert(msg);
}

alert('hello!'); //call it

您可以将使用此语法定义的函数分配给变量,就像其他对象一样:

var myAlert = function(msg) { alert(msg); };
myAlert("hello!");
匿名函数最常见的用例是作为高阶函数—当您将一个函数作为另一个函数的参数提供时。一个常见的例子是AJAX请求——您提供了一个回调函数,在请求完成时执行。使用jQuery,您可以编写:

$.get('/someurl', myAlert);

/someurl
上的资源响应时,jQuery将执行
myAlert

您可以将使用此语法定义的函数分配给变量,就像其他对象一样:

var myAlert = function(msg) { alert(msg); };
myAlert("hello!");
匿名函数最常见的用例是作为高阶函数—当您将一个函数作为另一个函数的参数提供时。一个常见的例子是AJAX请求——您提供了一个回调函数,在请求完成时执行。使用jQuery,您可以编写:

$.get('/someurl', myAlert);

/someurl
上的资源响应时,jQuery将执行
myAlert

您可以将使用此语法定义的函数分配给变量,就像其他对象一样:

var myAlert = function(msg) { alert(msg); };
myAlert("hello!");
匿名函数最常见的用例是作为高阶函数—当您将一个函数作为另一个函数的参数提供时。一个常见的例子是AJAX请求——您提供了一个回调函数,在请求完成时执行。使用jQuery,您可以编写:

$.get('/someurl', myAlert);

/someurl
上的资源响应时,jQuery将执行
myAlert

您可以将使用此语法定义的函数分配给变量,就像其他对象一样:

var myAlert = function(msg) { alert(msg); };
myAlert("hello!");
匿名函数最常见的用例是作为高阶函数—当您将一个函数作为另一个函数的参数提供时。一个常见的例子是AJAX请求——您提供了一个回调函数,在请求完成时执行。使用jQuery,您可以编写:

$.get('/someurl', myAlert);

/someurl
上的资源响应时,jQuery将执行
myAlert

除了将其分配给变量之外,如前所述,您可以像这样立即调用它:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });
或者您可能希望将其作为参数传递给另一个函数,如下所示:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });

如前所述,除了将其分配给变量之外,您还可以像这样立即调用它:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });
或者您可能希望将其作为参数传递给另一个函数,如下所示:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });

如前所述,除了将其分配给变量之外,您还可以像这样立即调用它:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });
或者您可能希望将其作为参数传递给另一个函数,如下所示:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });

如前所述,除了将其分配给变量之外,您还可以像这样立即调用它:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });
或者您可能希望将其作为参数传递给另一个函数,如下所示:

(function(msg) { alert(msg); })('hello!');
['hello!'].forEach(function(msg) { alert(msg); });

事实并非如此。你需要有一些参考资料

function(msg) { alert(msg); }();
// alert will appear

var f = function(msg) { alert(msg); };
f();
// alert will appear

$.ajax({
         url: '/some/ajax/url',
         method:' get'
       })
.done(function(msg) { alert(msg); });
// alert will appear displaying the response data.
这里的想法是,
done
函数接受一个参数并执行该参数,如下所示:

function done(callback) {
    ...
    callback(responseData);
}
我对jquery ajax api的使用可能不准确。我很快这样做是为了说明这一点


顺便说一下,当您将内联函数传递给某个对象或将其分配给变量时,此模式称为函数表达式。

它本身不是。你需要有一些参考资料

function(msg) { alert(msg); }();
// alert will appear

var f = function(msg) { alert(msg); };
f();
// alert will appear

$.ajax({
         url: '/some/ajax/url',
         method:' get'
       })
.done(function(msg) { alert(msg); });
// alert will appear displaying the response data.
这里的想法是,
done
函数接受一个参数并执行该参数,如下所示:

function done(callback) {
    ...
    callback(responseData);
}
我对jquery ajax api的使用可能不准确。我很快这样做是为了说明这一点


顺便说一下,当您将内联函数传递给某个对象或将其分配给变量时,此模式称为函数表达式。

它本身不是。你需要有一些参考资料

function(msg) { alert(msg); }();
// alert will appear

var f = function(msg) { alert(msg); };
f();
// alert will appear

$.ajax({
         url: '/some/ajax/url',
         method:' get'
       })
.done(function(msg) { alert(msg); });
// alert will appear displaying the response data.
这里的想法是,
done
函数接受一个参数并执行该参数,如下所示:

function done(callback) {
    ...
    callback(responseData);
}
我对jquery ajax api的使用可能不准确。我很快这样做是为了说明这一点


顺便说一下,当您将内联函数传递给某个对象或将其分配给变量时,此模式称为函数表达式。

它本身不是。你需要有一些参考资料

function(msg) { alert(msg); }();
// alert will appear

var f = function(msg) { alert(msg); };
f();
// alert will appear

$.ajax({
         url: '/some/ajax/url',
         method:' get'
       })
.done(function(msg) { alert(msg); });
// alert will appear displaying the response data.
这里的想法是,
done
函数接受一个参数并执行该参数,如下所示:

function done(callback) {
    ...
    callback(responseData);
}
我对jquery ajax api的使用可能不准确。我很快这样做是为了说明这一点


顺便说一下,当您将内联函数传递给某个对象或将其分配给变量时,此模式称为函数表达式。

调用匿名函数有四种常见方法:

将其保存到一个变量,如下所示:

var fn = function(msg) {
   // do something
}
通过在括号中换行执行,如下所示:

 (function(msg) {
    console.log( msg ); // -> 'This is my message'
 })('This is my message');
以“!”开头执行

通过将其作为回调传递

someFn( param1, param1, function( msg ) {
   console.log( msg );
});

调用匿名函数有四种常见方法:

将其保存到一个变量,如下所示:

var fn = function(msg) {
   // do something
}
通过在括号中换行执行,如下所示:

 (function(msg) {
    console.log( msg ); // -> 'This is my message'
 })('This is my message');
以“!”开头执行

通过将其作为回调传递

someFn( param1, param1, function( msg ) {
   console.log( msg );
});

调用匿名函数有四种常见方法:

将其保存到一个变量,如下所示:

var fn = function(msg) {
   // do something
}
通过在括号中换行执行,如下所示:

 (function(msg) {
    console.log( msg ); // -> 'This is my message'
 })('This is my message');
以“!”开头执行

通过将其作为回调传递

someFn( param1, param1, function( msg ) {
   console.log( msg );
});

调用匿名函数有四种常见方法:

将其保存到一个变量,如下所示:

var fn = function(msg) {
   // do something
}
通过在括号中换行执行,如下所示:

 (function(msg) {
    console.log( msg ); // -> 'This is my message'
 })('This is my message');
以“!”开头执行

通过将其作为回调传递

someFn( param1, param1, function( msg ) {
   console.log( msg );
});

必须分配给变量

比如说

var f = function () {};
或分配给函数的参数

Fun(arg1, function (){});

必须分配给变量

比如说

var f = function () {};
或分配给函数的参数

Fun(arg1, function (){});

必须分配给变量

比如说

var f = function () {};
或分配给函数的参数

Fun(arg1, function (){});

必须分配给变量

比如说

var f = function () {};
或分配给函数的参数

Fun(arg1, function (){});
th