函数声明与函数表达式

两者看着很像。

函数声明:function 函数名(){}

函数表达式:function 函数名(可写可不写)(){}  :命名函数表达式/匿名函数表达式

 

举几个例子:

function aaa(){}  :函数声明

var a=function aaa(){}  :命名函数表达式

var a = function(){}  :匿名函数表达式;

(function aaa(){}) :表达式

区别:

1.函数表达式可以直接后面加括号执行,而函数声明不行

function aaa(){alert(1);}() (错误)

var a=function aaa(){alert(1);}()     (直接运行)

2、  函数声明可以被提前解析出来

if(true){function aaa(){alert(1);}}

else{ function aaa(){alert(2);}};

aaa();   执行结果不确定,可能 1,可能2,因为函数声明被预解析,aaa在if之前就被解析完了

 

if(true){var a=function aaa(){alert(1);}}

else{ var a= function aaa(){alert(2);}};

a();   执行结果为1   先执行的if语句。

 

3、  匿名函数与命名函数的区别

var a=function aaa(){alert(1);}

a(); 所有浏览器都支持

aaa();非ie报错 但是把aaa放在函数里面 则可以。ie会将其解析为a()和aaa();

 

(function aaa(){alert(1)})

aaa()   非ie报错。

posted @ 2016-02-16 17:32  绵绵面包  阅读(132)  评论(0编辑  收藏  举报