函数声明与函数表达式
解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码前可用;对于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
alert( sum( 10, 10 ) ); function sum( num1, num2 ){ return num1 + num2; }
以上代码完全可以正常执行。因为在代码开始执行之前,解析器就已经读取函数声明,并将其添加到执行环境中了。而下面的将函数声明改变为变量初始化方位,就会在执行中导致错误。
alert( sum( 10, 10 ) ); var sum = function( num1, num2 ){ return num1 + num2; }
以上代码之所以会在运行期间产生错误,就是因为函数位于一个初始化语句中,而不是一个函数声明。
除了什么时候可以通过变量访问函数这一点区别以外,函数声明与函数表达式的语法其实是等价的。