解析JavaScript中的匿名函数

发布时间:2019-11-22编辑:脚本学堂
本文介绍下,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()函数内部,它是匿名的。
在把函数当成值来使用的情况下,都可以使用匿名函数。
不过,这并不是匿名函数唯一的用途。