函数声明与函数表达式

二者看着很像。浏览器

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

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

 

举几个例子:function

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

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

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

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

区别:

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

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

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

二、  函数声明能够被提早解析出来

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语句。

 

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

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

a(); 全部浏览器都支持

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

 

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

aaa()   非ie报错。

相关文章
相关标签/搜索