函数声明和函数表达式之间的区别

函数表达式是javascript中的一个既强大容易令人困惑的特性 《javascript高级程序设计》

定义函数的方式有两种

//指定函数名的方式
1.function sayHi(){
}
以上的函数声明方式一个重要的特征就是函数声明提升,意思是在执行代码之前会先读取函数声明,意味着可以把函数声明放在调用他的语句后面
即:
sayHi();
function sayHi(){
}

//表达式方式
2. var sayHi=function(){
}
函数表达式和其他表达式一样,在使用前必须对其进行赋值
var sayHi=function(){
}
sayHi();

函数声明的实际规则如下:

函数声明只能出现在程序或函数体内。从句法上讲,它们 不能出现在Block(块)({ … })中,例如不能出现在 if、while 或 for 语句中。因为 Block(块) 中只能包含Statement语句, 而不能包含函数声明这样的源元素。另一方面,仔细看一看规则也会发现,唯一可能让表达式出现在Block(块)中情形,就是让它作为表达式语句的一部分。但是,规范明确规定了表达式语句不能以关键字function开头。而这实际上就是说,函数表达式同样也不能出现在Statement语句或Block(块)中(因为Block(块)就是由Statement语句构成的)。

百度了很多关于函数声明和函数表达式区别的文章 感觉这篇写的最好

猜你喜欢

转载自blog.csdn.net/qq_40646986/article/details/82657793