语法
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); } };