1.使用function关键字定义

function f(x){
    return x*x;
}

上面定义了一个函数名为f的函数,用function关键字定义的函数是非匿名函数,需要指定函数名,用关键字function定义是最常用的方式。

2.函数直接量方式

JavaScript允许函数直接量的方式来定义函数,例如:

var f = function(x){
    retrn x*x;
    };

上面定义了一个未命名的函数,并把对它的引用存储到变量f中。

函数直接量的语法和function关键字的语法很相似,只不过他被用作表达式,而不是用作语句,而且也无需指定函数名。

虽然函数直接量的方式创建的是未命名函数,但是他的语法也规定它可以指定函数名,例如:

var f = function fun(x){
    retrn x*x;
    };

上面代码并没有真正的把对函数的引用存储到变量fun中,只是允许函数体用这个名字来引用自身。

3.Function构造函数

var f = new Function("x","return x*x");

Function构造函数可以接收任意数量的字符串参数,最后一个参数是函数的函数体,函数体可以包括任意数量的JavaScript语句,每条语句用分号隔开。

和函数直接量方式一样,Function构造函数方式定义的也是未命名的函数。

Function构造函数方式定义函数比较复杂,一般很少使用,

参考文献:JavaScript权威指南