区别主要有以下三点:
(1)当函数语句被定义时,在同一个脚本代码中被优先考虑,因此,无论该函数在定义前还是定义后都可以被脚本调用。
如:
myFunction();
function myFunction(){}
而函数表达式,只有被创建后才能被调用,
如:myFunction();
var myFunction = function(){}
(2)函数表达式可以被作为另外一些函数或方法的参数。如:
setInterval(function(){};),111);
这时函数表达式就作为参数了。
(3)函数表达式和函数语句的区别还体现在内存管理和垃圾回收方面。
函数表达式不像函数语句那样独立存在,把函数表达式赋给一个变量时,就会在代码中创建对该函数表达式的唯一引用。如果上述变量无法使用时,函数也将无法使用。如:
var myFunction = function(){}
myFunction();//可以调用
myFunction = null;
myFunction();//不可调用,导致错误
函数语句则不同,它是以对象形式独立存在的,无法删除。如:
function muFunction(0{}
var f = myFunction;
f();//可以调用
myFunction();//可以调用
f = null;
myFunction();//可以调用
f();//不可调用
注意:如果不是特殊情况下,建议使用函数语句。