函数声明与函数表达式
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报错。
以上是关于函数声明与函数表达式的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 函数声明与函数表达式的区别 函数声明提升(function declaration hoisting)