函数声明与函数表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数声明与函数表达式相关的知识,希望对你有一定的参考价值。

两者看着很像。

函数声明: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报错。

以上是关于函数声明与函数表达式的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段8——声明函数

js函数表达式和函数声明的区别

函数声明与函数表达式的区别

JavaScript 函数声明与函数表达式的区别 函数声明提升(function declaration hoisting)

函数声明 函数表达式 与立即调用函数表达式的比较

函数声明与函数表达式