函数表达式

语法

function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

参数

name
函数名,可以省略,如果省略的话将变成匿名函数。函数名只有在函数体中才能被调用。
paramN
传递给函数的参数名。
statements
组成函数体的语句声明。

描述

函数表达式和函数声明非常像,并且有几乎相同的语法书写形式。

两者之间最大的不同是函数名,在函数表达式中可以省略函数名以此创造一个匿名函数。并且函数表达式也可以作为IIFFE(Immediately Invoked Function Expression立即执行个函数表达式),也就是说其在定义的时候就马上运行了。

举例:

下面的例子定义了一个没有命名的函数,并且将函数赋值给x。

函数返回了参数的平方。

var x = function(y) {
   return y * y;
};

已被命名的函数表达式

如果你想在函数体里面指代当前的函数,你需要创建一个已经命名的函数表达式。

这个函数名值是在函数体内可以使用,这样可以同样避免使用不符合规范的arguments.callee属性。

var math = {
  'factorial': function factorial(n) {
    if (n <= 1)
      return 1;
    return n * factorial(n - 1);
  }
};
原文地址:https://www.cnblogs.com/RachelChen/p/5427566.html