匿名函数 – 学习画板

首页 » JavaScript » 匿名函数

匿名函数

匿名函数就是没有名字的函数,有时候也称为拉姆达函数。匿名函数是一种强大得令人难以置信的工具,其用途非常之多。来看看下面这个典型的函数声明:

function functionName(arg0, arg1, arg2) {
    //函数体
}

既可以像上面这样声明函数,也可以像下面这样以函数表达式的形式定义函数:

var functionName = function (arg0, arg1, arg2) {
    //函数体
};

虽然这两个例子在逻辑上等价,但它们之间还是存在一些区别。当然,函数声明与函数表达式之间的主要区别,就死前者会在代码执行以前被加载到作用域中,而后者则是在代码执行到哪一行的时候才会有定义。另一个重要的区别是函数声明会给函数指定一个名字,而函数表达式创建一个匿名函数,然后将这个匿名函数赋给一个变量。换句话说,上面第二个例子创建了一个带有三个参数的匿名函数,然后把这个匿名函数付给了变量functionName;但是,并没有给匿名函数指定名字。
也可以像下面这样写一个匿名函数:

function (arg0, arg1, arg2) {
    //函数体
}

在将函数作为参数传入另一个函数,或者从一个函数中返回另一个函数时,通常都要使用以这种形式来定义匿名函数。下面是createComparisonFunction()函数的例子:

function createComparisonFunction(propertyName) {
    retun
    function (object1, object2) {
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value1 < value2) {
            return -1;
        } else if (value1 > value2) {
            return 1;
        } else {
            return 0;
        }
    };
}

createComparisonFunction()就返回了一个匿名函数。返回的函数可能会被赋值给一个变量,或者以其它方式被调用;不过,在createComparisonFunction()函数内部,它是匿名的。在把函数当成值来使用的情况下,都可以使用匿名函数。不过,这并不是匿名函数唯一的用途。

此文章发表在 JavaScript 标签为 . 将固定链接加入收藏.