一、函数
- 函数声明 function 函数名称 (参数:可选){ 函数体 }
- 函数表达式 function 函数名称(可选)(参数:可选){ 函数体 }
如何判断是函数声明还是函数表达式呢?
ECMAScript是通过上下文来区分的,如果function foo(){}是作为赋值表达式的一部分的话,那它就是一个函数表达式,如果function foo(){}被包含在一个函数体内,或者位于程序的最顶部的话,那它就是一个函数声明。
function foo(){} // 声明,因为它是程序的一部分 var product = function product(){}; // 表达式,因为它是赋值表达式的一部分 new function Person(){}; // 表达式,因为它是new表达式 (function(){ function addProduct (){} // 声明,因为它是函数体的一部分 })();
函数声明的规则:
函数声明只能出现在程序或函数体内。从句法上讲,它们 不能出现在Block(块)({ ... })中,例如不能出现在 if、while 或 for 语句中。因为 Block(块) 中只能包含Statement语句, 而不能包含函数声明这样的源元素。
函数声明只能出现在程序或函数体内。从句法上讲,它们 不能出现在Block(块)({ ... })中,例如不能出现在 if、while 或 for 语句中。因为 Block(块) 中只能包含Statement语句, 而不能包含函数声明这样的源元素。