使用JavaScript理解匿名函数
Understanding anonymous functions with JavaScript
我了解函数及其工作原理。然而,我不确定以下内容:
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);
jQuery将在CCD_ 2处的资源响应时执行CCD_。
有四种常用的方法来调用匿名函数:
将其保存到一个变量中,如下所示:
var fn = function(msg) {
// do something
}
用括号括起来执行,如:
(function(msg) {
console.log( msg ); // -> 'This is my message'
})('This is my message');
以"!"开头执行
!function(msg) {
console.log( msg ); // -> 'This is my message'
}('This is my message');
通过将其作为回调传递
someFn( param1, param1, function( msg ) {
console.log( msg );
});
正如joews所指出的,除了将其分配给变量之外,您还可以立即调用它,如下所示:
(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-ajaxapi的使用可能不准确。我这么做很快就说明了这一点。
顺便说一句,当您将内联函数传递给某个对象或将其分配给变量时,这种模式被称为函数表达式。
必须分配给var
例如
var f = function () {};
或分配给函数的参数
Fun(arg1, function (){});
相关文章:
- 从函数JavaScript返回不可变数组/对象
- 将对象传递给函数.JavaScript
- 如何定义const函数javascript(语法糖)
- 新的日期函数javascript
- TypeError:this.getAttribute不是一个函数-javascript
- 从函数javascript发送变量
- 扩展自容器函数Javascript
- 从内部函数javascript内部分配外部函数的对象
- 使用函数JavaScript中的函数
- 在这里使用回调函数(JavaScript)有什么好处吗
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 将“e”传递给一个新函数 - javascript
- 调用函数中的一个函数——Javascript
- 传递的变量不适用于我的函数-Javascript
- 如何将类方法设置为等于多个函数?-Javascript
- 显示php中的函数javascript
- 如何使用php代码创建函数Javascript弹出框
- 未调用的外部函数-javascript
- 如何在类中运行函数.Javascript
- 关闭mouseover上的一个函数——Javascript,jQuery