1、函数声明
其语法为
function functionName(){ //函数体 }
首先是function关键字,然后是函数名,其重要特征是函数声明提升,即在执行代码之前会先读取函数声明,使其在读取任何代码之前可用,这就意味着可以把函数放在调用它的语句之后
2、函数表达式
该方法有不同的语法形式
var functionName = function(arg0,arg1,arg2){ //函数体 };
即创建一个函数并将其赋值给一个变量,这种情况下的函数叫做匿名函数(也叫拉姆达函数),此种声明方法必须先赋值后使用,需要等到解析器执行到它所在的代码行才会真正被解释执行,否则会导致错误
3、使用Function构造函数
Function构造函数可以接收任意数量的参数,但是最后一个参数始终都被看成是函数体
var functionName = new Function(arg1,arg2,...,functionBody);
这种定义方式会导致解析两次代码从而影响性能,第一次是常规解析代码,第二次是解析传入构造函数中的字符串