在Javascript定义一个函数一般有如下三种方式:
函数声明(或叫语句式):
function fn(x){ alert(x); }
函数字面量(或者叫函数直接量)、函数表达式:
var fn = function(x){ alert(x); }
Function()构造函数:
var fn= new Function( 'x','alert(x);' )
效率对比:一二效率高于第三种。
特点:一二解析后存于内存。随时可以调用效率高,但是占用内存多。适合长期存在的函数。
第三种随用随new,用完即可摧毁。不占用内存,每次都得重建耗时多,适合一次性使用。
解析顺序:
对于function语句式的函数,javascript解析器由于函数提升,会优先解析(函数还没调用先解析好)。
对于函数直接量,function还没被赋值给变量,函数没有声明,函数初始化在声明之前就会报错。构造函数同理函数直接量。