显而易见的区别:
1.函数声明必须以function开头,而函数表达式一定不能以function开头;
2.函数声明必须有标识符(函数名),函数表达式可有可无;
其他的区别:
1.函数声明会将标识符提升(声明提升),函数表达式不会提升;
2.函数声明和具名的函数表达式中的函数名都可以在函数自身内部被调用,区别在于具名函数表达式不能在函数自身外部(不能在父作用域中)被调用,函数声明却可以。如下:
1 ?var ex=function example(){ 2 ?????????????????var a=1; 3 ?????????????????a++; 4 ?????????????????console.log(a); 5 ?????????????????example(); //内部调用有效,正确; 6 ?????????????} 7 ?8 ?????example(); ??//错误,这里调用函数是无效的;example在这里未声明; 9 ?????ex(); //这里调用ex是有效的;10 11 12 function example(){13 ?????????????????var a=1;14 ?????????????????a++;15 ?????????????????console.log(a);16 ?????????????????example(); //内部调用有效,正确;17 ?????????????}18 ??????????example(); //这里调用函数是有效的
js函数声明和函数表达式的区别
原文地址:http://www.cnblogs.com/c4633/p/7637139.html